Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Várias colunas em MATCH AGAINST


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.