Trier par pertinence avec MySQL

lundi 14 novembre 2011 :: perrick :: MySQL :: 5 commentaires :: aucun trackback

Ce n'est pas tous les jours que je découvre des petits trucs avec MySQL et la synaxe SQL en général. Alors voici ma dernière production :

SELECT `contact`.* FROM contact WHERE (contact.lastname LIKE '%gra%' OR SOUNDEX(contact.lastname) LIKE SOUNDEX('gra') OR contact.firstname LIKE '%gra%' OR SOUNDEX(contact.firstname) LIKE SOUNDEX('gra') OR contact.company LIKE '%gra%' OR SOUNDEX(contact.company) LIKE SOUNDEX('gra')) LIMIT 0,10

Cette requête permet de sélectionner des contacts en fonction de leur nom, de leur prénom ou de leur entreprise, mais aussi avec une orthographe approchante via la fonction SOUNDEX. Elle marche, elle est en production depuis plusieurs années. Seul problème : le tri, surtout quand on trouve plus de 10 réponses. Comment distinguer facilement les réponses en orthographe précise de celles qui s'en approchent seulement ?

Read next