lucene
Lucene est un moteur de recherche libre écrit en Java qui permet d'indexer et de rechercher du texte. Ce logiciel libre de la fondation Apache permet la recherche plein texte (avec des analyseurs linguistiques) et documentaire (avec des champs adaptés à chaque type de 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 incluait récemment différents sous-projets tels Lucene.Net, Mahout, Solr et Nutch. Solr a été récemment fusionné avec Lucene, alors que Mahout, Nutch, et Tika sont devenus des projets indépendants.
Lucene intéresse les développeurs d'applications des bibliothèques, des archives, du secteur de l'édition numérique, de la linguistique, de l'histoire, ainsi que les bio-informaticiens qui doivent manipuler des banques de séquences biologiques.
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.
- Tri de pertinence selon différents algorithmes ;
- Listes de mots vides pour différentes langues ;
- Recherche floue adaptée à une langue, un type de documents ;
- Elargissement de requêtes par synonymes ;
- ...
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 :
Lucene est utilisé pour analyser et indexer principalement des fichiers XML, contenant des données de biologie.
- Implémentation C++ (Clucene) et interface perl Lucene.pm.
- Une paire de scripts et un fichier de configuration permettent d'analyser les documents XML via des requêtes Xpath et de requêter et générer des formulaires de recherche automatiquement.
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érique (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.