Колоните, наречени вътре в MATCH()
трябва да са същите колони, дефинирани по-рано за индекс FULLTEXT. Тоест наборът от колони трябва да е същият във вашия индекс, както при извикването ви на MATCH()
.
Така че, за да търсите две колони, трябва да дефинирате индекс FULLTEXT в същите две колони, в същия ред.
Следното е наред:
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Следното е грешно, защото MATCH() препраща към две колони, но индексът е дефиниран само за една колона.
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Следното е грешно, защото MATCH() препраща към две колони, но индексът е дефиниран за три колони.
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2, column3);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Следното е грешно, защото MATCH() препраща към две колони, но всеки индекс е дефиниран за една колона.
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column2);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Следното е грешно, защото MATCH() препраща към две колони, но в грешен ред:
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);
SELECT ID FROM table1 WHERE MATCH(column2, column1) AGAINST ('text')
В обобщение, използването на MATCH() трябва да препраща към точно същите колони, в същия ред, като една пълнотекстова индексна дефиниция.