Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Mehrere Spalten in MATCH AGAINST

Die in MATCH() benannten Spalten müssen dieselben Spalten sein, die zuvor für einen FULLTEXT-Index definiert wurden. Das heißt, der Satz von Spalten muss in Ihrem Index derselbe sein wie in Ihrem Aufruf von MATCH() .

Um also zwei Spalten zu durchsuchen, müssen Sie einen FULLTEXT-Index für dieselben zwei Spalten in derselben Reihenfolge definieren.

Folgendes ist in Ordnung:

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

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

Folgendes ist falsch, da MATCH() auf zwei Spalten verweist, der Index aber nur für eine Spalte definiert ist.

ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);

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

Folgendes ist falsch, weil MATCH() zwei Spalten referenziert, aber der Index für drei Spalten definiert ist.

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

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

Folgendes ist falsch, da MATCH() auf zwei Spalten verweist, aber jeder Index für eine Spalte definiert ist.

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

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

Folgendes ist falsch, weil MATCH() auf zwei Spalten verweist, aber in der falschen Reihenfolge:

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

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

Zusammenfassend muss die Verwendung von MATCH() genau dieselben Spalten in derselben Reihenfolge wie eine Volltextindexdefinition referenzieren.