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

La recherche MySQL Fulltext Boolean Mode renvoie trop de résultats

Pour améliorer le tri des résultats en mode booléen, vous pouvez utiliser ce qui suit :

SELECT column_names, MATCH (text) AGAINST ('word1 word2 word3')
AS col1 FROM table1
WHERE MATCH (text) AGAINST ('+word1 +word2 +word3' in boolean mode) 
order by col1 desc;

Utiliser le premier MATCH() on obtient le score en mode de recherche non booléen (plus distinctif) . La deuxième MATCH() assure que nous n'obtenons vraiment que les résultats que nous voulons (avec les 3 mots) .

Ainsi votre requête deviendra :

SELECT *, MATCH (artist, title) AGAINST ('paul van dyk')
    AS score FROM tracks
    WHERE MATCH (artist, title) 
    AGAINST ('+paul +van +dyk' in boolean mode) 
    order by score desc;

Avec un peu de chance; vous obtiendrez de meilleurs résultats maintenant.

Si cela fonctionne ou ne fonctionne pas ; s'il vous plaît laissez-moi savoir.