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

Donnez plus de pertinence à certains champs et triez-les par pertinence dans la recherche en texte intégral mysql

Commencez par créer trois index FULLTEXT :

* one on the title column
* one on the body column
* one on both title and body columns

Ensuite, construisez votre requête de la manière suivante :

SELECT field1, field2, field3, title, body,
MATCH (title) AGAINST ('word_to_search') AS rel_title,
MATCH (body) AGAINST ('word_to_search') AS rel_body
FROM table_to_use
WHERE MATCH (title,body) AGAINST ('word_to_search')
ORDER BY (rel_title*2)+(rel_body)

Cela donnera au titre 2 fois plus de pertinence qu'au corps.

C'est très pratique lorsque vous devez autoriser le tri du contenu, par exemple, par balises (qui ne sont pas vues par les utilisateurs) car cela vous permet d'ajuster les résultats en arrière-plan.