A faire le tour de la toile à la recherche d'un "Search Engine" pour HaveFnuBB, Laurent sur la mailing list de Jelix m'a montré un tuto de Symfony avec les mêmes désiderata que mézigues ;)

A savoir, créer un moteur de recherche qui ne soit pas dépendant :

  • d'un soft tiers (tels Lucene, Xapian, Sphinx, nécéssitant parfois de compiler un module php)
  • d'un SGBD spécifique (par exemple en utilisant le FULLTEXT spécifique à MySQL et surtout à MyISAM)

Le tuto de symfony reprend des idées de Roscripts.com, quant à l'algo Stemmer, et des Stopwords évoqués.

Ce que je retiens donc pour la roadmap de ce module de moteur de recherche :

  • une table search_words composée des colonnes id (pour conserver le lien avec la table contenant les messages), words (contenant les mots du message), weight (étant le poids de chaque mot).
  • une méthode permettant d'alimenter / mettre à jour la table search_words (Quand on ajoute un message au forum ? via une réponse à jEvent::notify('PostAfterSave') ? )
  • une méthode permettant la recherche
  • une méthode permettant d'épurer les mots inutiles (stopwords) du message (1)
  • 2 templates : un pour le formulaire de recherche ; un pour l'affichage du résultat.

Reste à tester tout cela !

(1) ps : je n'ai pas (encore) trouvé d'implem' PHP à l'algo Porter Stemmer pour les frenchies (en UTF-8) ;-).

malgré tout un billet interessant sur ce dernier sujet.