Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :Pourquoi le score est toujours de 1 dans Fulltext ?

Le MODE BOOLÉEN ne prend en charge que les réponses binaires, c'est-à-dire 0 ou 1, que la chaîne de recherche apparaisse ou non dans la colonne. Pour obtenir un résultat décimal pour calculer un poids, vous devez utiliser match-against sur les colonnes indexées.

Vous pouvez utiliser le mode booléen de cette façon pour obtenir votre poids :

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

L'avantage du mode booléen est que vous pouvez l'utiliser sur des colonnes non indexées mais uniquement avec 0,1 comme résultat, le mode non booléen renvoie un résultat décimal mais ne peut être appliqué que sur des colonnes indexées... voir aussi ici .