Lucene
Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.
Lucene
Lucene logo
Moteur de recherche textuel
Développeur Fondation Apache
Dernière version 2.1.0 (le 26 février 2007)
Environnement (L'environnement est tout ce qui nous entoure. C'est l'ensemble des éléments naturels et artificiels au sein duquel se déroule la vie humaine. Avec les enjeux écologiques actuels, le terme...) Windows (Windows est une gamme de systèmes d'exploitation produite par Microsoft, principalement destinées aux machines compatibles PC. C'est le remplaçant de MS-DOS. Depuis les années 1990, avec la sortie de Windows 95, son...), Linux (Au sens strict, Linux est le nom du noyau de système d'exploitation libre, multitâche, multiplate-forme et multi-utilisateur de type UNIX créé par Linus Torvalds, souvent désigné comme le noyau Linux. Par extension, Linux désigne...)
Type Moteur de recherche (Un moteur de recherche est une application permettant de retrouver des ressources (pages Web, forums Usenet, images, vidéo, fichiers, etc.) associées...)
Licence Licence Apache (La licence Apache est une licence de logiciel libre et open source. Elle est écrite par l'Apache Software Foundation, qui l'applique à tous les logiciels qu'elle publie. Il existe plusieurs versions de...)
Site Web (Un site Web est un ensemble de pages Web hyperliées entre elles et mises en ligne à une adresse Web. On dit aussi site Internet par métonymie, le...) http://lucene.apache.org/

Lucene (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...) est un moteur (Un moteur est un dispositif transformant une énergie non-mécanique (éolienne, chimique, électrique, thermique par exemple) en une énergie mécanique ou...) de recherche (La recherche scientifique désigne en premier lieu l’ensemble des actions entreprises en vue de produire et de développer les connaissances scientifiques. Par extension métonymique, la recherche...) libre écrit en Java qui permet d'indexer et de rechercher du texte. C'est un projet (Un projet est un engagement irréversible de résultat incertain, non reproductible a priori à l’identique, nécessitant le concours et l’intégration...) open source de la fondation Apache mis à disposition sous licence Apache. Il est également disponible pour les langages Ruby (Ruby est un langage de programmation libre. Il est interprété, orienté objet, et multi-paradigme.), Perl, C++.

Historique

Lucene est d'abord mis en téléchargement (En informatique, le téléchargement (en anglais download) est l’opération de transmission d’informations — programmes, données, images, sons, vidéos — d’un ordinateur à un autre via un...) par Doug Cutting sur le site SourceForge en mars 2000. Il est alors publié sous licence publique générale limitée GNU (GNU est un système d'exploitation composé exclusivement de logiciels libres.)[1]. L'annonce de son transfert vers Apache Jakarta (Jakarta (que certains écrivent Djakarta en français, à prononcer [dʒa'karta]) est la capitale de la République d'Indonésie. Située sur l'île de Java, la ville couvre 650 km² pour...) 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 (Tapestry (de l'anglais: tapisserie) est un protocole P2P utilisant une table de hachage distribuée.), 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 (Le code source (ou les sources voire le source) est un ensemble d'instructions écrites dans un langage de programmation informatique de haut niveau,...) 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 (Un langage naturel est une langue « normale » parlée par un être humain.).

Propulsé par Apache Lucene

Ci dessous, quelques sites utilisant Lucene[3] (par ordre alphabétique) :

OpenSolaris (OpenSolaris est un projet de système d'exploitation libre commandité par Sun Microsystems. Il est initialement basé sur un morceau du code source de Solaris dont il conserve le noyau, le support réseau, les...)

Chandan, ingénieur (« Le métier de base de l'ingénieur consiste à résoudre des problèmes de nature technologique, concrets et souvent complexes, liés à la...) sécurité chez Sun (Sun Microsystems (NASDAQ : SUNW) est un constructeur d'ordinateurs et un éditeur de logiciels américain.)[4], a annoncé le 15 juin 2005 sur son blog (Un blog ou blogue est un site Web constitué par la réunion de billets agglomérés au fil du temps et souvent classés par ordre antéchronologique (les plus récents en premier). Chaque billet...) [5] qu'il avait écrit un moteur (Un moteur (du latin mōtor : « celui qui remue ») est un dispositif qui déplace de la matière en apportant de la puissance. Il...) de recherche simple en Java, OpenGrok et que " Lucene (avait) été choisi pour être la bibliothèque logicielle (En informatique, une bibliothèque ou librairie[1] logicielle (ou encore, bibliothèque de programmes) est un ensemble de fonctions utilitaires, regroupées...) 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 (Le temps est un concept développé par l'être humain pour appréhender le changement dans le monde.) et d'explorer les millions de lignes des codes sources d'OpenSolaris.

Wikipédia (Wikipédia (prononcé /wi.ki.pe.dja/) est une encyclopédie, multilingue, universelle, librement diffusable, disponible sur le Web et écrite par les internautes grâce à la technologie wiki. Elle a été...)

Jusqu'à avril 2004, la fonction recherche de Wikipédia était indisponible durant les heures (L'heure est une unité de mesure  :) de pointe. Dans ces cas-là, il était recommandé d'utiliser le moteur de recherche externe Yahoo! (Yahoo!,Inc. est une société américaine de services sur Internet opérant notamment un portail Web. À l'origine, Yahoo! était uniquement...) ou Google (Google, Inc. est une société fondée le 7 septembre 1998 dans la Silicon Valley en Californie par Larry Page et Sergey Brin, auteurs du moteur de recherche Google. Depuis 2001, Eric Schmidt en est le PDG (CEO). La société compte environ 12 000...).

Cependant, depuis l'annonce de Brion Vibber sur la liste de diffusion (Dans le langage courant, le terme diffusion fait référence à une notion de « distribution », de « mise à disposition » (diffusion d'un produit, d'une...) [6], il en est tout (Le tout compris comme ensemble de ce qui existe est souvent interprété comme le monde ou l'univers.) 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 (Le sens originel de machine virtuelle (ou Virtual Machine (VM) en anglais) est la création de plusieurs environnements d'exécution sur un seul ordinateur, dont chacun émule l'ordinateur...) Java qui n'était pas encore un logiciel libre (Un logiciel libre est un logiciel dont l'utilisation, l'étude, la modification, la duplication et la diffusion sont universellement autorisées sans contrepartie financière. Les...). Le programme a donc été plus tard totalement réécrit en utilisant GCJ.

Fonctionnement de Lucene

Indexation

Jusqu'à l'explosion (Une explosion est la transformation rapide d'une matière en une autre matière ayant un volume plus grand, généralement sous forme de gaz. Plus cette transformation s'effectue rapidement, plus la matière...) de l'internet (Internet est le réseau informatique mondial qui rend accessibles au public des services variés comme le courrier électronique, la messagerie...), 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 (Les besoins se situent au niveau de l'interaction entre l'individu et l'environnement. Il est souvent fait un classement des besoins humains en trois grandes...) de couvrir un large champ (Un champ correspond à une notion d'espace défini:) de fichiers ou de trouver une chaîne de caractères (En informatique, une chaîne de caractères est une suite ordonnée de caractères. La chaîne de caractères est un type de...) précise dans un seul fichier ( Un fichier est un endroit où sont rangées des fiches. Cela peut-être un meuble, une pièce, un bâtiment, une base de données informatique. Par exemple : fichier des patients d'un médecin, fichier des...), il ne faut pas scanner (Un scanneur, ou numériseur à balayage est l'équivalent du terme anglais scanner, qui vient du verbe anglais to scan, signifiant « balayer » dans le sens de...) séquentiellement chaque fichier pour la phrase donnée (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction d'affaire, d'un événement, etc.). Car, plus le nombre (La notion de nombre en linguistique est traitée à l’article « Nombre grammatical ».) 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.

Recherche

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 (On peut définir le positionnement comme un choix stratégique qui cherche à donner à une offre (produit, marque ou enseigne) une position crédible, différente et attractive au sein d’un marché et...) 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é (La quantité est un terme générique de la métrologie (compte, montant) ; un scalaire, vecteur, nombre d’objets ou d’une autre manière de dénommer la...) 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 (La main est l’organe préhensile effecteur situé à l’extrémité de l’avant-bras et relié à ce dernier par le poignet. C'est un...) pour entrer ces requêtes.

Classes

Les sections suivantes fournissent une brève introduction aux principales classes qui servent (Servent est la contraction du mot serveur et client.) à 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 (De manière générale, le mot objet (du latin objectum, 1361) désigne une entité définie dans un espace à trois dimensions, qui a une fonction précise, et qui peut être désigné par...) 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 (Le mot implantation peut avoir plusieurs significations :), RAMDirectory, prend toutes ses données en mémoire (D'une manière générale, la mémoire est le stockage de l'information. C'est aussi le souvenir d'une information.). 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 (Un filtre est un système servant à séparer des éléments dans un flux.) d'entrée.
  • Document (Dans son acception courante un document est généralement défini comme le support physique d'une information.) - 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 (En informatique, une base de données (Abr. : « BD » ou « BDD ») est un lot d'informations stockées dans un dispositif informatique....), 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 (Dans les technologies de l'information, une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction, d'un événement, etc.) 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 (Le mot chaîne peut avoir plusieurs significations :) 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 (Dans le domaine du transport, un container (de l'anglais), parfois francisé en conteneur, est un caisson métallique, en forme de parallélépipède, conçu pour le...) 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 (Le mot requête, synonyme de demande, est employé dans les domaines suivants :) donnée, mais seulement une partie d'entre eux.

Ressources

Outils

  • Luke (Lucene Index Toolbox) est un outil (Un outil est un objet finalisé utilisé par un être vivant dans le but d'augmenter son efficacité naturelle dans l'action. Cette augmentation se...) de diagnostique et de développement pratique qui accède aux index 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 (Le cuirassé Monitor de 1862 est un bateau de l'US Navy qui doit sa célébrité au fait qu'il est le premier à avoir participé à un combat de navires cuirassés, signant par là la fin de...)) 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 (Hadoop est un framework Java libre destiné aux applications distribuées et à la gestion intensive des données. Il permet aux applications de travailler avec des milliers de nœuds et des pétaoctets de...) (HDFS) et implémentation de MapReduce (Traduction de l'article MapReduce du Wikipédia anglophone).
  • Lucene4c : implémentation du moteur de recherche Lucene.
  • Apache Lucy : convergence (Le terme de convergence est utilisé dans de nombreux domaines :) des sous-projets KinoSearch et Ferret, tous deux écrits en C.
  • LIUS : interface (Une interface est une zone, réelle ou virtuelle qui sépare deux éléments. L’interface désigne ainsi ce que chaque élément a besoin de connaître de l’autre pour pouvoir fonctionner correctement.) de recherche pour le moteur Lucene.

Implémentation

Lucene a été porté ou est en train (Un train est un véhicule guidé circulant sur des rails. Un train est composé de plusieurs voitures (pour transporter des personnes) et/ou de...) d'être porté sur différents langages de programmation (La programmation dans le domaine informatique est l'ensemble des activités qui permettent l'écriture des programmes informatiques. C'est une étape importante de la conception de logiciel (voire de matériel, cf....) autre que le Java :

  • .NET (NLucene, Lucene.Net)
  • C (Lucene4c)
  • C++ (CLucene)
  • Delphi (MUTIS)
  • Perl (Plucene)
  • Python (Pylucene)
  • Ruby (Ferret)
  • Common Lisp (Montezuma)
  • Php (PHP (sigle de PHP: Hypertext Preprocessor), est un langage de scripts libre principalement utilisé pour produire des pages Web dynamiques via un serveur HTTP, mais pouvant également fonctionner comme n'importe...) (Zend ( Le zend (féminin : zende) est surtout une langue dans laquelle a été écrite une version tardive de l'Avesta, de laquelle Anquetil-Duperron tira une première traduction. (à...) Framework (Un framework est un espace de travail modulaire. C'est un ensemble de bibliothèques et de conventions permettant le développement rapide d'applications. Il fournit suffisamment de briques logicielles...))

Notes et références

Page générée en 0.422 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique