La limite des 50% sur une recherche FULL TEXT avec Mysql

mardi 17 septembre 2013 :: perrick :: MySQL :: 2 commentaires :: aucun trackback

Un mot qui est trouvé dans la moitié des enregistrements d'une table n'est pas efficace pour trouver les document appropriés. En fait, il trouvera sûrement beaucoup de documents inappropriés à la recherche. On sait tous que cela arrive souvent lorsqu'on recherche quelque chose sur internet en utilisant un moteur de recherche. Extrait de la documentation MySQL pour Recherche en texte intégral (Full-text) dans MySQL

Sauf que dans le cas du petit corpus de questions / réponses que compose la section FAQ d'Opentime et encore plus dans le minuscule corpus généré pour mes tests unitaires, ce seuil de 50% m'a fait arracher les cheveux pendant 2h. Et la solution pour outre-passer cette limitation est sur la page suivante de la documentation : il suffit d'ajouter l'option IN BOOLEAN MODE. Elle permet - entre autres - de ne pas utilise pas le seuil de 50%. Problème : elle ne trie pas automatiquement les lignes par ordre de pertinence décroissante. Heureusement qu'il y a encore d'autres astuces possibles : MySQL match() against() - order by relevance and column.

Vos commentaires et/ou trackbacks

Le mardi 17 septembre 2013 à 18:27, commentaire par Jérôme :: site :: #

MySQL n'est juste pas du tout adapté à faire de la recherche full-text, non ?
Une petite instance Solr ou Elastic Search dans un coin et la vie devient si simple... ;D

Le mardi 17 septembre 2013 à 21:10, commentaire par perrick :: site :: #

Bien sûr que d'autres alternatives existent. Mais vu la taille riquiqui de la liste des questions, je n'avais aucune envie d'installer un autre outil ;-)

Ajouter un commentaire

Les commentaires pour ce billet sont fermés.