Lucene | |
---|---|
Moteur de recherche textuel
|
|
Développeur | Fondation Apache |
Dernière version | 2.1.0 (le 26 février 2007) |
Environnement | Windows, Linux |
Type | Moteur de recherche |
Licence | Licence Apache |
Site Web | http://lucene.apache.org/ |
Lucene est un moteur de recherche libre écrit en Java qui permet d'indexer et de rechercher du texte. C'est un projet open source de la fondation Apache mis à disposition sous licence Apache. Il est également disponible pour les langages Ruby, Perl, C++.
Lucene est d'abord mis en téléchargement par Doug Cutting sur le site SourceForge en mars 2000. Il est alors publié sous licence publique générale limitée GNU[1]. L'annonce de son transfert vers Apache Jakarta est publiée en octobre 2001.
Le projet Lucene vient du livre Lucene in Action (Lucene en action) publié en décembre 2004. Il est écrit conjointement par Erik Hatcher, un des responsables des projets open source Ant, Lucene et Tapestry, et par Otis Gospodnetic, un membre actif du projet Apache Jakarta.
Le 14 février 2005, Lucene effectue sa migration vers le projet Apache Jakarta. La base de code source est convertie au contrôleur de version SVN.
Le lundi 12 décembre 2005, Grant Ingersol présente un cas d'étude en Java à l'ApacheCon US sur l'utilisation avancée des composants de Lucene[2] en donnant notamment des détails techniques sur le traitement du langage naturel.
Ci dessous, quelques sites utilisant Lucene[3] (par ordre alphabétique) :
Chandan, ingénieur sécurité chez Sun[4], a annoncé le 15 juin 2005 sur son blog [5] qu'il avait écrit un moteur de recherche simple en Java, OpenGrok et que " Lucene (avait) été choisi pour être la bibliothèque logicielle servant de noyau de recherche et d'indexation pour le code source, après avoir pris en considération toutes une variété de moteur de recherche et d'outils ". Complété par Exuberant Ctags qui serait utilisé pour extraire les définitions des fichiers sources. Ceci, afin de gagner du temps et d'explorer les millions de lignes des codes sources d'OpenSolaris.
Jusqu'à avril 2004, la fonction recherche de Wikipédia était indisponible durant les heures de pointe. Dans ces cas-là, il était recommandé d'utiliser le moteur de recherche externe Yahoo! ou Google.
Cependant, depuis l'annonce de Brion Vibber sur la liste de diffusion [6], il en est tout autrement [7]. Cette annonce a été également rapportée par Michael Snow environ une semaine plus tard dans le Wikipedia Signpost (équivalent anglais du Wikimag) [8].
Kate Kate a écrit le programme en décembre, mais celui-ci a été mis aux oubliettes à cause de la machine virtuelle Java qui n'était pas encore un logiciel libre. Le programme a donc été plus tard totalement réécrit en utilisant GCJ.
Jusqu'à l'explosion de l'internet, la Classification décimale de Dewey était très efficace pour catégoriser des objets dans une bibliothèque. Cependant, comme la somme des données collectée est devenue trop vaste, il faut maintenant utiliser des moyens alternatifs et plus dynamiques pour trouver de l'information.
Au cœur de tous les moteurs de recherche se trouve le concept de l'indexation : en traitant une seule fois les données brutes et en leur donnant de multiples liens hautement efficients, on accélère l'opération de recherche. Le concept est assez analogue à l'index terminologique que l'on trouve généralement à la fin d'un livre, qui permet de trouver rapidement les pages qui traitent d'un sujet donné.
Si l'on a besoin de couvrir un large champ de fichiers ou de trouver une chaîne de caractères précise dans un seul fichier, il ne faut pas scanner séquentiellement chaque fichier pour la phrase donnée. Car, plus le nombre de fichiers est grand, plus longue est la recherche d'information. Il vaut mieux établir un index des textes dans un format qui permet la recherche rapide, ce qui évite la méthode séquentielle. Ce processus est appelé indexation.
La recherche est l'action de regarder des mots dans un index pour trouver des références à des documents lorsqu'ils apparaissent. La qualité d'une recherche est évaluée par le positionnement et la pertinence des résultats. Cependant, d'autres facteurs entrent en compte dans une recherche. La rapidité est un facteur déterminant pour traiter une vaste quantité d'informations. De même, pouvoir supporter des requêtes simples ou complexes, des interrogations de phrases, des caractères, les résultats de positionnement et de tri sont aussi importants qu'une syntaxe facile à prendre en main pour entrer ces requêtes.
Les sections suivantes fournissent une brève introduction aux principales classes qui servent à construire ce moteur de recherche.
Lucene a été porté ou est en train d'être porté sur différents langages de programmation autre que le Java :