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

MySQL:Por que a pontuação é sempre 1 em Fulltext?


O MODO BOOLEAN suporta apenas respostas binárias, significa 0 ou 1 quer a string de pesquisa apareça na coluna ou não. Para obter um resultado decimal para calcular um peso, você deve usar match-against em colunas indexadas.

Você pode usar o modo booleano desta forma para obter seu peso:
SELECT *, ((1.3 * (MATCH(column1) AGAINST ('query' IN BOOLEAN MODE))) +
(0.6 * (MATCH(column2) AGAINST ('query' IN BOOLEAN MODE)))) AS relevance
FROM table WHERE ( MATCH(column1,column2) AGAINST
('query' IN BOOLEAN MODE) ) ORDER BY relevance DESC

A vantagem do modo booleano é que você pode usá-lo em colunas não indexadas mas apenas com 0,1 como resultado, o modo não booleano retorna um resultado decimal mas só pode ser aplicado em colunas indexadas... veja também aqui .