org.apache.lucene.search

La classe Query représente l'arbre syntaxique de notre requête. Elle va être analysée et exploitée par d'autre classe.

Tournons nous plutôt sur la classe Searcher : elle possède 2 sous classes, IndexSearcher et MutipleSearcher. La première permet de faire des recherches sur un index, la deuxième s'imprègne du design pattern composite : elle permet de faire des recherches sur plusieurs index.

Lorsqu'un utilisateur utilise une objet Searcher (et plus précisément IndexSearcher), il utilise la méthode search (Query, filtre) qui retourne un objet de type Hits. Une classe Hits est un cache de résultats. En effet, plutôt que de tout charger en mémoire les résultats (qui seront pas forcément utilisé tous utilisé lors d'une recherche). L'objet Hits va contenir en lui le parcourt des résultats, la requête et le filtre.

En général, on récupère un scorer de la façon suivante :

Scorer scorer = query.weight(this).scorer(reader);

Le scorer d'un terme query, va créer un "similatary" à partir duquel on pourra calculer le score. Les termes query vont pour cela créer un objet weight (spécial à ce type de query) a partir duquel on pourra accéder au scorer ou on pourra calculer le score.

Plus concrètement, lorsqu'on va demander le score d'un TermeQuery par exemple, on va rechercher dans le dictionnaire et donner tous les donner les renseignements (sous forme d'un TermeDocs) fourni par le dictionnaire pour un document. Pour toutes les documents, un calcule de score sera effectué : (dans terme scorer)

Le calcule de score pour des termes simple respecte la relation :




Sun Seng Tan 2004-02-28