|
|
Recherche - Lucene
Lucene est un moteur de recherche et d'indexation de texte écrit en Java. Il est également disponible pour les langages Ruby, Perl, C++...
|
|
|
|
|
Mis en oeuvre sur de très nombreux sites web (dont Wikipedia), Lucene comprend plusieurs sous projets : une version Java, la plus avancée, mais aussi des versions C, Perl et Ruby.
Utilisateurs :
Communauté :
Fonctionnalité :
Robustesse :
Performance :
Documentation :
Facilité d'emploi :
| Recommandé par Bull |
|
| Supporté et intégré |
|
Lucene est un 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 et C. Fonctionnement de Lucene:
Indexation: Le moteur de recherche de lucene se base sur 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. Classes Les sections suivantes fournissent une brève introduction aux principales classes qui servent à construire ce moteur de recherche. Classes d'indexation IndexWriter - La classe IndexWriter est le composant central du processus d'indexation. Cette classe crée un nouvel index et ajoute des documents à un index existant. On peut se la représenter comme un objet par lequel on peut écrire dans l'index mais qui ne permet pas de le lire ou de le rechercher. Directory - La classe Directory représente l'emplacement de l'index de Lucene. IndexWriter utilise une des implémentations de Directory, FSDirectory, pour créer son index dans un répertoire dans le système de fichiers. Une autre implémentation, RAMDirectory, prend toutes ses données en mémoire. Cela peut être utile pour de plus petits indices qui peuvent être pleinement chargés en mémoire et peuvent être détruits sur la fin d'une application. Analyzer - Avant que le texte soit dans l'index, il passe par l'Analyser. Celui-ci est une classe abstraite qui est utilisée pour extraire les mots importants pour l'index et supprime le reste. Cette classe tient une part importante dans Lucene et peut être utilisée pour faire bien plus qu'un simple filtre d'entrée. Document - La classe Document représente un rassemblement de champs. Les champs d'un document représentent le document ou les métadonnées associées avec ce document. La source originelle (comme des enregistrements d'une base de données, un document Word, un chapitre d'un livre, etc.) est hors de propos pour Lucene. Les métadonnées comme l'auteur, le titre, le sujet, la date, etc. sont indexées et stockées séparément comme des champs d'un document. Field - Chaque document est un index contenant un ou plusieurs champs, inséré dans une classe intitulé Field. Chaque champ (field) correspond à une portion de donnée qui est interrogé ou récupéré depuis l'index durant la recherche.
Classes de recherche IndexSearcher - La classe IndexSearcher est à la recherche ce que IndexWriter est à l'indexation. On peut se la représenter comme une classe qui ouvre un index en mode lecture seule. Term - Un terme est une unité basique pour la recherche, similaire à l'objet field. Il est une chaîne de caractère : le nom du champ et sa valeur. Notez que les termes employés sont aussi inclus dans le processus d'indexation. Query - La classe Query est une classe abstraite qui comprend BooleanQuery, PhraseQuery, PrefixQuery, PhrasePrefixQuery, RangeQuery, FilteredQuery, et SpanQuery. TermQuery - C'est la méthode la plus basique d'interrogation de Lucene. Elle est utilisée pour égaliser les documents qui contiennent des champs avec des valeurs spécifiques. QueryParser - La classe QueryParser est utilisée pour générer un décompositeur analytique qui peut chercher à travers un index. Hits - La classe Hits est un simple conteneur d'index pour classer les résultats de recherche de documents qui apparaissent pour une interrogation donnée. Pour des raisons de performances, les exemples de classement ne chargent pas depuis l'index tous les documents pour une requête donnée, mais seulement une partie d'entre eux.
Ressources
Outils Luke (Lucene Index Toolbox) est un outil de diagnostique et de développement pratique qui accède aux indexes de Lucene déjà existants et permet de montrer et modifier leur contenu de plusieurs façons. Luke est couvert par la Licence Apache sauf pour une section de son code. LIMO (Lucene Index Monitor) donne des informations de bases sur les indexes utilisés par le moteur de recherche Lucene. C'est un projet de SourceForge.
Sous-projets Nutch : moteur de recherche open source. Hadoop : Système de Fichiers HaDoop (HDFS) et implémentation de MapReduce. Lucene4c : implémentation du moteur de recherche Lucene. Apache Lucy : convergence des sous-projets KinoSearch et Ferret, tous deux écrits en C.
Implémentation Lucene a été porté ou est en train d'être porté sur différents langages de programmation autre que le Java :
|
|
|
|