Lucene est une bibliothèque d’indexation et de recherche écrite en Java. Ce logiciel libre de la fondation Apache permet de développer des moteurs de recherche plein texte (avec des analyseurs linguistiques) et documentaires (avec des champs adaptés à chaque type document). Ses fonctionnalités sont nativement accessibles en java, il existe des APIs pour d’autres langages, dont : PHP, Perl, Python, Ruby… Plusieurs portages ont été fait, officiellement (C, .NET), ou pas (C++, Perl…).
Lucene peut intéresser certains développeurs d’applications, notamment des bioinformaticiens qui doivent manipuler des banques de séquences biologiques, ou encore des linguistes de corpus.
Logiciel libre actif depuis plusieurs années, Lucene est extensible, tout en conservant une architecture simple et cohérente. On trouvera du code, de la documentation, ou des listes de diffusion, pour des concepts de la recherche plein texte généralement réservés aux spécialistes.
Des projets comme Nutch ou Mahout illustrent comment exploiter différents formats de fichiers (bureautiques, pdf).
Le format des index est documenté, indépendant de l’implémentation qui les écrit et les lit. Par contre, le format d’index peut changer d’une version à l’autre, la compatibilité ascendante est toujours conservée.
Lucene se prête à l’exploitation de corpus structurés, aussi bien textes que données: par exemple (mais pas seulement) fichiers XML. Il peut être employé en application client (java : swing, eclipse…), ou web.
Au LIPM :
Nous utilisons Lucene pour analyser et indexer principalement des fichiers XML, contenant des données de biologie.
Les limitations de Lucene sont celles de ses utilisateurs (développement java, analyse documentaire, traitements linguistiques), ou celles de son modèle théorique : ni relationnel, ni hiérarchique. Ainsi, il peut souvent remplacer avec avantage une base de donnée relationnelles (SQL), du moins, tant que les relations sont surtout 1-n. Les requêtes de type numériques (tri, intervalles) ont été notablement améliorées ces deux dernières années. Pour des données fortement hiérarchisées (annuaires, thèses, inventaires d’archives), des simulations sont possibles, des outils comme LDAP, ou XQuery peuvent être plus commodes.