Home Industrie et technologieInformatique et internetGuide d’Apache Lucene pour des applications de recherche performantes

Guide d’Apache Lucene pour des applications de recherche performantes

by Sara
France

Apache Lucene est une bibliothèque de recherche puissante en Java, utilisée pour créer des applications de recherche performantes telles qu’Elasticsearch et Solr, adaptées à de nombreux cas d’utilisation, notamment dans le commerce électronique. Lucene effectue des recherches ultra-rapides sur de grands volumes de données grâce à ses capacités d’indexation et de recherche optimales. À la fin de cet article, vous aurez maîtrisé les concepts fondamentaux d’Apache Lucene, même si vous êtes novice dans le domaine de l’ingénierie de recherche.

Objectifs d’apprentissage

  • Comprendre les concepts fondamentaux d’Apache Lucene.
  • Découvrir comment Lucene alimente des applications de recherche comme Elasticsearch et Solr.
  • Comprendre comment l’indexation et la recherche fonctionnent dans Lucene.
  • Apprendre les différents types de requêtes supportées par Apache Lucene.
  • Comprendre comment construire une simple application de recherche utilisant Lucene et Java.

Qu’est-ce qu’Apache Lucene ?

Pour comprendre Lucene en profondeur, nous devons examiner quelques terminologies et concepts clés. Par exemple, considérons les informations suivantes sur trois produits différents de notre collection :

    {
        "product_id": "1",
        "title": "Casque sans fil à réduction de bruit",
        "brand": "Bose",
        "category": ["Électronique", "Audio", "Casques"],
        "price": 300
    }
    {
        "product_id": "2",
        "title": "Souris Bluetooth",
        "brand": "Jelly Comb",
        "category": ["Électronique", "Accessoires ordinateur", "Souris"],
        "price": 30
    }
    {
        "product_id": "3",
        "title": "Clavier sans fil",
        "brand": "iClever",
        "category": ["Électronique", "Accessoires ordinateur", "Clavier"],
        "price": 40
    }
    

Document

Un document est une unité fondamentale d’indexation et de recherche dans Lucene. Chaque document est identifié par un ID unique. Lucene transforme le contenu brut en documents contenant des champs et des valeurs.

Champ

Un document Lucene contient plusieurs champs, chacun ayant un nom et une valeur, par exemple :

  • product_id
  • title
  • brand
  • category
  • price

Terme

Un terme est une unité de recherche dans Lucene. Lucene applique plusieurs étapes de prétraitement sur le contenu brut avant de créer des termes, telles que la tokenisation.

Index inversé

La structure de données sous-jacente dans Lucene qui permet des recherches ultra-rapides est l’index inversé. Dans un index inversé, chaque terme est associé aux documents qui le contiennent, ainsi qu’à la position du terme dans ces documents.

Index inversé : Apache Lucene

Segment

Un index peut être subdivisé par Lucene en plusieurs segments. Chaque segment est en lui-même un index. Les recherches de segments sont généralement effectuées de manière sérielle.

Scoring

Lucene calcule la pertinence d’un document grâce à des mécanismes de scoring tels que la fréquence des termes inverse document frequency (TF-IDF). D’autres algorithmes de scoring, comme BM25, améliorent également TF-IDF.

Fréquence des termes (TF)

La fréquence des termes est le nombre de fois qu’un terme t apparaît dans un document.

Fréquence des termes (TF) : Apache Lucene

Fréquence des documents (DF)

La fréquence des documents est le nombre de documents contenant un terme t. La fréquence inverse des documents divise le nombre total de documents par le nombre de documents contenant le terme t, mesurant ainsi l’unicité d’un terme particulier.

Fréquence des documents (DF) : Apache Lucene

Fréquence des termes inverse fréquence des documents (TF-IDF)

Le TF-IDF est le produit de la fréquence des termes et de la fréquence inverse des documents, indiquant à quel point un terme est distinctif et unique par rapport à l’ensemble de la collection.

Fréquence des termes inverse fréquence des documents (TF-IDF)

Composants d’une application de recherche Lucene

Lucene contient deux composants majeurs :

  • Indexer – Utilise la classe IndexWriter pour l’indexation.
  • Searcher – Utilise la classe IndexSearcher pour la recherche.

Indexer Lucene

L’index Lucene est responsable de l’indexation des documents pour l’application de recherche. Lucene effectue plusieurs étapes de traitement et d’analyse de texte, comme la tokenisation, avant d’indexer les termes dans un index inversé.

Indexer Lucene

Recherche Lucene

La recherche dans Lucene se fait avec la classe IndexSearcher, qui nécessite la spécification d’un objet Query valide. Une chaîne de requête utilisateur peut être convertie en un objet Query valide à l’aide de la classe QueryParser.

Recherche Lucene

Types de requêtes de recherche supportées par Lucene

Lucene prend en charge plusieurs types de requêtes. Voici les cinq types de requêtes les plus courants :

Requête de terme

Une requête de terme correspond aux documents contenant un terme particulier.

Requête booléenne

Les requêtes booléennes correspondent aux documents qui répondent à une combinaison booléenne d’autres requêtes.

Requête de plage

Les requêtes de plage correspondent aux documents contenant des valeurs de champ dans une plage donnée.

Requête de phrase

Une requête de phrase correspond aux documents contenant une séquence particulière de termes.

Requête fonctionnelle

Calculent des scores pour les documents en fonction d’une fonction de la valeur d’un champ.

Construire une simple application de recherche avec Lucene

Nous avons appris les bases de Lucene, l’indexation, la recherche et les types de requêtes. Maintenant, nous allons assembler ces éléments pour construire une simple application de recherche utilisant les composants principaux de Lucene : l’indexeur et le chercheur.

Dans l’exemple ci-dessous, nous indexons trois documents contenant les champs suivants : Nom et Email. Le nom est ajouté en tant que champ texte et l’e-mail en tant que champ chaîne.

Questions fréquemment posées

Q1. Lucene prend-il en charge Python ?

Oui, Apache Lucene a un projet PyLucene qui prend en charge les applications de recherche Python.

Q2. Quels sont les différents moteurs de recherche open source disponibles ?

Parmi les moteurs de recherche open source, on trouve Solr, Open Search, Meilisearch, Swirl, etc.

Q3. Lucene prend-il en charge la recherche sémantique et vectorielle ?

Oui, il le fait. Cependant, le nombre maximum de dimensions pour les champs vectoriels est limité à 1024, ce qui devrait être augmenté à l’avenir.

Q4. Quels sont les différents algorithmes de scoring de pertinence ?

Parmi eux, on trouve la fréquence des termes inverse fréquence des documents (TF-IDF), BM25, l’analyse sémantique latente (LSA), et les modèles d’espace vectoriel (VSM).

Q5. Quels sont quelques exemples de requêtes complexes prises en charge par Lucene ?

Parmi les exemples, on trouve des requêtes floues, des requêtes de portée, des requêtes multi-phrases et des requêtes d’expressions régulières.

Apache Lucene | Recherche | Applications | Elasticsearch | Solr | France

You may also like

Leave a Comment