Apache Lucene : moteur de recherche fulltext
Lucene est un moteur de recherche open source créé par la fondation Apache. Il sert à rechercher dans une quantité très importante d'information textuelle, un peut comme le font les moteurs de recherche internet tel que Google, Yahoo ou Bing.
L'intérêt de ce programme est qu'il est conçu pour rechercher dans du texte, chose pour laquelle ne sont pas conçues les bases de données tel que MySQL (même s’il y a des fonctions qui s'en rapprochent comme les index fulltext mysql).
Il n'y a pas de contraintes techniques importantes, Lucene peut être utilisé pour créer un moteur de recherche sur un site web, ou comme moteur de recherche de documents dans une entreprise.
Comment ça fonctionne ?
Le principe est simple : dans un premier temps, Lucene va lire tout le contenu dans lequel vous souhaitez recherche (par exemple : toutes les pages d'un site internet), c'est ce qu'on appelle l'indexation.
Ensuite, on va pouvoir interroger Lucene, qui va alors analyser la requête (le texte recherché, comme sur Google), et utiliser son index pour ressortir les pages qui correspondent le mieux à la recherche.
On communique avec Lucene via une API (généralement sous forme de webservices : XML, JSON...), depuis n'importe quel langage : PHP, Python, Ruby.
Alors bien sûr, cet outil n'est pas aussi performant que ce que peuvent faire les grands moteurs de recherche américains comme Google qui sont capables de chercher sur des quantités d'information qui provient du monde entier, mais c'est largement suffisant pour la plupart des utilisateurs.
Utiliser Lucene en PHP
Zend Framework offre une interface pour Lucene : Zend_Search_Lucene, sinon il est aussi possible de l'interroger via l'interface ligne de commande comme expliqué ici.
Après avoir lu calculer une moyenne avec excel vous en saurez d'avantage sur ce sujet.
On trouve aussi des interfaces comme Solr ou ElasticSearch. Mais il existe aussi d'autres outils de recherche comme Sphinx, plus adapté à PHP.
Alternatives
Parmi les concurrents de Lucene, on trouve notemment Google Search Appliance (GSA) : il s'agit d'un serveur loué par Google qui utilise un algorithme de recherche gardé secret pour indexer des données. C'est une sorte de boite noire : on ne sait pas ce qu'il y a à l'intérieur, on l'utilise via son interface de programmation en lui donnant la liste des contenus (par exemple une liste d'URL) à indexer.
Sphinx est un autre concurrent de Lucene, il est gratuit et opensource et codé en C++ (pas besoin de Java comme Lucene). Sphinx est utilisé par des sites à fort trafic comme Dailymotion ou The Pirate Bay.
Allez donc jeter un oeil sur cette page : fée de l'automne.