Premiers pas avec Lucene : Recherche dans l'index

Dans la continuité de l'entrée précédente, qui parlait de l'indexation de données avec Lucene, je vais aujourd'hui parler des Query, les objets permettant de faire des requêtes de recherche dans l'index.

Prenons un petit exemple ; dans l'index que nous avons créé hier, essayons de rechercher les documents dont le content contient le mot-clé "Java".

Les différentes étapes à suivre dont les suivantes :
  1. Créer un IndexReader, un objet capable de lire l'index.
  2. Créer un objet de type IndexSearcher, un objet capable de faire une recherche dans un index, à travers un IndexReader.
  3. Créer un objet de type QueryParser. Cet objet va parser la requête passée, et l'interpréter afin de fournir les résultats les plus pertinents.
  4. Parser la requête, nous obtiendrons un objet de type Query, contenant la requête à exécuter.
  5. Exécuter la requête, qui nous renvera une liste de résultats (sous la forme d'un objet de type Hits, contenant les résultats.
  6. Itérer sur cette liste, afin d'afficher les résultats de notre recherche.

Un petit exemple de code pour concrétiser tout ça :
IndexReader index = IndexReader.open(INDEX_ROOT);
Searcher searcher = new IndexSearcher(index);
QueryParser parser = new QueryParser("content", new StandardAnalyzer());
Query results = parser.parse("Java");
Hits hits = searcher.search(results);
Iterator<Hit> iterator = hits.iterator();
while (iterator.hasNext()) {
    Hit hit = iterator.next();
    System.out.println(hit.get("title") + ", by " + hit.get("author"));
}

Les résultats sont automatiquement triés par pertinence. Il est possible de récupérer un "score" représentatif de la pertinence d'un résultat grâce à la méthode Hit.getScore().


Voici donc un premier et rapide aperçu du mécanisme de requêtes dans des index Lucene. Le système de requête en entier est bien plus complexe, et permet des requêtes beaucoup plus poussées. Je continuerais donc cette série d'articles au fur et à mesure de mes découvertes. En attendant, la documentation officielle de Lucene est très complète.

Permalink  |  Commentaires (0)


Comments:

Post a Comment:
  • HTML Syntax: Allowed