Cinq puissants moteurs de recherche open source Apache Lucene : une brique de base performante

Moteur de recherche full-text, Lucene se caractérise par une faible empreinte mémoire, la capacité de répondre à un grand nombre de requêtes par heure et une compacité de son index. Revers de la médaille, il reste une bibliothèque limitée fonctionnellement. Pour disposer d'un crawler de sites, d'un parseur de documents, il faut étendre le cœur d'Apache Lucene avec des briques complémentaires. C'est la raison pour laquelle Apache Lucene sert de base à nombre d'autres solutions de recherche open source à la couverture fonctionnelle plus large à l'image de Solr, Compass et Elasticsearch.

Ecrite en Java, la dernière évolution d'Apache Lucene (4.8.1) fonctionne sur Java 7 et versions supérieures. Il existe de multiples autres implémentations de Lucene, que ce soit en C, C++, Objective-C, Perl, Ruby, etc. Si la couverture fonctionnelle de Lucene est limitée, le nombre d'extensions disponibles est le point fort de la plateforme. Tout ce qu'on peut attendre d'un moteur de recherche moderne est disponible, il faut trouver les bonnes extensions.

Apache Lucene en bref
Source : JDN
LangageJava
Interfaces disponiblesLucene a été porté dans de multiples langages, dont C, C++, Python, Ruby, Perl, Lisp, PHP, etc.
Plateformes supportées Toute plateforme disposant d'une machine virtuelle Oracle Java ou OpenJDK en version 7 et supérieures
Licence Apache 2.0
Principaux utilisateurs Airbus, Apple, Disney, IBM, LinkedIn, Twitter (dans une version modifiée)


Points forts / Points faibles
Source : JDN
Points fortsForte communauté, avec des mises à jour fréquentes, faible empreinte mémoire, de nombreux projets open source qui viennent compléter le moteur lui-même, lien vers le Big Data (notamment le projet Blur qui tisse un lien entre Lucene et Hadoop).
Points faiblesComplexité de mise en œuvre, n'est pas une solution distribuée, le moteur Apache Lucene ne constitue que le cœur de la solution de recherche (il faut trouver les bons composants pour l'étendre).