Les colonnes nommées à l'intérieur de MATCH()
doivent être les mêmes colonnes définies précédemment pour un index FULLTEXT. Autrement dit, l'ensemble de colonnes doit être le même dans votre index que dans votre appel à MATCH()
.
Ainsi pour rechercher deux colonnes, vous devez définir un index FULLTEXT sur les deux mêmes colonnes, dans le même ordre.
Ce qui suit est correct :
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Ce qui suit est faux car MATCH() fait référence à deux colonnes mais l'index est défini pour une seule colonne.
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Ce qui suit est faux car MATCH() fait référence à deux colonnes mais l'index est défini pour trois colonnes.
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2, column3);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Ce qui suit est faux car MATCH() fait référence à deux colonnes mais chaque index est défini pour une colonne.
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column2);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Ce qui suit est faux car MATCH() fait référence à deux colonnes mais dans le mauvais ordre :
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);
SELECT ID FROM table1 WHERE MATCH(column2, column1) AGAINST ('text')
En résumé, l'utilisation de MATCH() doit référencer exactement les mêmes colonnes, dans le même ordre, qu'une définition d'index de texte intégral.