Pour pallier aux imperfections et bogues de la recherche FULLTEXT avec MySQL : problèmes réguliers de corruption lors de l’indexation, syntaxe de recherche inappropriée et incomplète, incompatibilité avec Innodb, … Mario Bouchard et moi avons installé Sphinx sur notre serveur de développement pour tester le tout.
Donc voici nos conclusions après avoir remplacé la recherche en FULLTEXT de MySQL sur le site en développement des Éditions CHU par le nouveau moteur de recherche.
- Recherche compatible avec tous les types de tables de MySQL : MyISAM, Innodb, … et compatible également avec PostgreSQL, MS SQL server, fichiers XML.
- La recherche est extrêmement rapide et est conçue pour digérer une grande quantité d’enregistrement.
- L’API en PHP répond très bien à nos besoins et même plus.
Pour ce qui est des fonctionalités, en voici un bref aperçu :
- Recherche de contenu avec ‘*’ : vous pouvez ainsi rechercher la fin d’un ISBN avec la commande ‘*12345’.
- Les mots apparentés sont recherchés également : pour le mot accident ont trouvera également le mot accidents.
- Les stopwords fonctionnent également : la recherche du mot ‘le’ ne produira aucun résultat tandis que la recherche ‘le camion’ en produira.
- On peut même géomarquer l’indexation pour ainsi rechercher dans un certain rayon.
- …
Il ne reste plus aux programmeurs qu’à en explorer toutes les possibilités.
















Comment par pierluc — 27 juillet 2009 à 18 h 34
Si on écrit PFK, est-ce que ça dit que le mot doit contenir au moins 5 lettres? Est-ce qu’il prend en compte les déterminents? Je sais qu’il les ignores s’ils sont seuls, mais s’ils accompagnent un mot, est-ce que seul le mot est pris en compte ou le déterminent aussi?
Comment par Michel Maltais — 29 juillet 2009 à 15 h 47
Le nombre de lettres indexées est paramétrable et n’a pas de minimum, donc, les mots de une lettre peuvent être indexés.
Pour ce qui est des déterminants, il s’agit de les ajouter dans la liste des stopwords comme je l’ai fait dans ma démo et il ne seront pas pris en compte. La recherche « la » ne produira aucun résultat mais la recherche « la petite » en produira.