Accueil  / Semaine 9 / Présentation de Lucene

Présentation de Lucene

Plan

1. Ce qu’est Lucene

2. Fonctionnement de Lucene

3. Lucene et ses applications

4. Lucene sans Java

5. Syntaxe de Lucene

6. Formats de fichiers


1. Ce qu’est Lucene

Dans cette section du cours, vous allez vous familiariser avec Lucene, un outil de recherche développé en Java par Doug Cutting selon la philosophie « Open Source ». Vous aurez par la suite l’occasion d’utiliser Lucene dans le cadre de recherches simples d’informations, lesquelles vous prépareront à la réalisation d’une activité notée - toujours avec l’aide de Lucene - à la semaine 10 du cours.

Pour bien saisir ce qu’est Lucene, il faut comprendre dès le départ que nous avons affaire ici à une API plutôt qu’à une application proprement dite.

Vous vous demandez ce qui fait la différence ? Vous pouvez voir Lucene comme une application « en devenir », dont les parties les plus complexes sont déjà codées mais pour lesquelles il vous reste du travail à faire, de la programmation « simple » à effectuer.

Cette programmation vous permettra de bâtir facilement l’application qui répond à vos besoins, en utilisant Java.

En un mot, la programmation, c’est le prix à payer pour éviter de vous retrouver devant une application qui vous force à choisir parmi des tonnes d’options plus ou moins ésotériques dont la majorité ne vous dit absolument rien. Avec Lucene, si une option est là, c’est que vous en aviez besoin. Point final.

La programmation de Lucene vous inquiète ? Ne vous en faites pas. Vous verrez très rapidement que Lucene reste simple à utiliser. C’est vous qui déterminerez l’ampleur du travail à exécuter.

La meilleure manière de voir concrètement de quoi il est question, c’est certainement d’utiliser Lucene. C’est ce que vous êtes invité à faire.


2. Fonctionnement de Lucene

Avant de commencer à travailler concrètement avec Lucene, prenons quelques minutes pour bien comprendre sa manière de fonctionner.

Lucene agit en quelque sorte comme une couche intermédiaire entre les données à indexer et vos programmes. Pour ce faire, il indexera des objets appelés des documents et, à partir des index, il permettra une recherche rapide et efficace dans ces documents.

Notez ici que le terme document a un sens très large : un document pourrait être un texte Word, un fichier PDF, un ensemble de fichiers, une page web sur un serveur distant, des informations stockées dans une base de données, etc. Lucene n’a qu’une seule exigence : le document original doit pouvoir être converti en fichier texte.

Concrètement, vous pourrez utiliser Lucene dans un programme Java en faisant appel à des classes créées à l’avance qui effectueront tout le travail lié à l’indexage et à la recherche dans un index.

Si vous désirez en apprendre plus sur Lucene, vous pouvez en consulter le site officiel.

Pour l’instant, je vous invite à observer son fonctionnement en passant à la prochaine section, où vous installerez Lucene avant de compléter quelques exemples très simples de son utilisation.


3. Lucene et ses applications

Lucene est très polyvalent ; on l’utilise notamment en bio-informatique [1].
On peut se demander si Lucene pourrait un jour servir de moteur pour un outil comparable à Yahoo ou à Google. Depuis janvier 2003, des gens travaillent effectivement à faire de Lucene un moteur de recherche sur le web appelé Nutch. Nutch supporte la technologie MapReduce créée par Google. Il n’est cependant pas encore possible de le tester.


4. Lucene sans Java

Pour ceux qui ne sont pas des amateurs de Java, il existe une version de Lucene pour .NET. Il existe aussi une version de Lucene en Python.

Dans ce cours, nous ne nous intéressons qu’à la version Java de Lucene.


5. Syntaxe de Lucene

Lucene permet de construire des moteurs de recherche professionnels. En particulier, il supporte une syntaxe riche. Lucene permet

- la recherche d’expressions exactes avec l’utilisation des guilllements (« "jean marche" »),
- la recherche booléenne (« jean AND marche », « jean OR marche », « jean NOT marche »),
- la composition avec les paranthèse (« jean OR (marc NOT jean) »),
- la recherche sur les métadonnées (« marc title:jean », « mod_date :[20020101 TO 20030101] »),
- la recherche de termes semblables (« jaen » pourra trouver « jean »),
- la recherche de mots avec caractères omis (« je ?n » trouvera « jean »),
- la recherche avec séquences omises (« je* » trouvera « jean »).

On peut même chercher deux termes qui sont à proximité l’un de l’autre : « "jean marc" 10 » cherche les mots jean et marc séparés par au plus 10 mots.


5. Formats de fichiers

L’index créé par Lucène est stocké dans un ou plusieurs fichiers. La documentation officielle de Lucène explique en quoi consiste chaque fichier.

En mode traditionnel, Lucène va générer plusieurs fichiers de tailles variables ayant les extensions .f[0-9]*, .fdt, .fdx, .fnm, .frq, .prx, .tii, et .tis. En mode « fichiers composés », l’index se trouve plutôt dans des fichiers avec des extensions .cfs et .cfx.

Quand on fait référence à la « taille de l’index », on fait référence à la somme d’espace utilisée par tous ces fichiers.


[1Bourne, P.E. et al.,The distribution and query systems of the RCSB Protein Data Bank, Nucleic Acids Research, vol. 32, nº 90001, 2004.