Kolumny nazwane wewnątrz MATCH()
muszą być tymi samymi kolumnami, które zostały wcześniej zdefiniowane dla indeksu FULLTEXT. Oznacza to, że zestaw kolumn w indeksie musi być taki sam, jak w wywołaniu funkcji MATCH()
.
Tak więc, aby przeszukać dwie kolumny, musisz zdefiniować indeks PEŁNOTEKSTOWY w tych samych dwóch kolumnach, w tej samej kolejności.
Poniższe jest w porządku:
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Poniższe jest błędne, ponieważ MATCH() odwołuje się do dwóch kolumn, ale indeks jest zdefiniowany tylko dla jednej kolumny.
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Poniższe jest błędne, ponieważ MATCH() odwołuje się do dwóch kolumn, ale indeks jest zdefiniowany dla trzech kolumn.
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2, column3);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Poniższe jest błędne, ponieważ MATCH() odwołuje się do dwóch kolumn, ale każdy indeks jest zdefiniowany dla jednej kolumny.
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column2);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Poniższe jest błędne, ponieważ MATCH() odwołuje się do dwóch kolumn, ale w złej kolejności:
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);
SELECT ID FROM table1 WHERE MATCH(column2, column1) AGAINST ('text')
Podsumowując, użycie MATCH() musi odwoływać się dokładnie do tych samych kolumn, w tej samej kolejności, jako jedna definicja indeksu pełnotekstowego.