sql >> Base de Datos >  >> RDS >> Mysql

Múltiples columnas en PARTIDO CONTRA

Las columnas nombradas dentro de MATCH() deben ser las mismas columnas definidas previamente para un índice FULLTEXT. Es decir, el conjunto de columnas debe ser el mismo en su índice que en su llamada a MATCH() .

Entonces, para buscar en dos columnas, debe definir un índice FULLTEXT en las mismas dos columnas, en el mismo orden.

Lo siguiente está bien:

ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);

SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')

Lo siguiente es incorrecto porque MATCH() hace referencia a dos columnas pero el índice está definido solo para una columna.

ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);

SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')

Lo siguiente es incorrecto porque MATCH() hace referencia a dos columnas pero el índice está definido para tres columnas.

ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2, column3);

SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')

Lo siguiente es incorrecto porque MATCH() hace referencia a dos columnas pero cada índice está definido para una columna.

ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column2);

SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')

Lo siguiente es incorrecto porque MATCH() hace referencia a dos columnas pero en el orden incorrecto:

ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);

SELECT ID FROM table1 WHERE MATCH(column2, column1) AGAINST ('text')

En resumen, el uso de MATCH() debe hacer referencia exactamente a las mismas columnas, en el mismo orden, que una definición de índice de texto completo.