As colunas nomeadas dentro de
MATCH()
devem ser as mesmas colunas definidas anteriormente para um índice FULLTEXT. Ou seja, o conjunto de colunas deve ser o mesmo em seu índice e em sua chamada para MATCH()
. Portanto, para pesquisar duas colunas, você deve definir um índice FULLTEXT nas mesmas duas colunas, na mesma ordem.
O seguinte está certo:
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
O seguinte está errado porque MATCH() faz referência a duas colunas, mas o índice é definido para apenas uma coluna.
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
O seguinte está errado porque MATCH() faz referência a duas colunas, mas o índice é definido para três colunas.
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2, column3);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
O seguinte está errado porque MATCH() faz referência a duas colunas, mas cada índice é definido para uma coluna.
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column2);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
O seguinte está errado porque MATCH() faz referência a duas colunas, mas na ordem errada:
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);
SELECT ID FROM table1 WHERE MATCH(column2, column1) AGAINST ('text')
Em resumo, o uso de MATCH() deve fazer referência exatamente às mesmas colunas, na mesma ordem, como uma definição de índice de texto completo.