Requêtes supportées

Zend_Search_Lucene et Lucene Java supportent un langage de requête puissant. Il permet de rechercher des termes individuels, des phrases, des ensembles de termes ; en utilisant des jokers ou des recherches floues ; en combinant des requêtes à l'aide d'opérateurs booléens et ainsi de suite.

Une description détaillée du langage de requête peut être trouvé dans la documentation du composant Zend_Search_Lucene.

Ci-dessous, des exemples de quelques requêtes types communes et de stratégies.

Example #1 Effectuer une requête pour un mot seul

  1. hello

Recherche le mot "hello" à travers les champs de tous les documents.

Note: Champ de recherche par défaut
Note importante ! Lucene Java recherche uniquement dans les champs de "contenu" par défaut, mais Zend_Search_Lucene recherche à travers tous les champs. Ce comportement peut être modifié en utilisant la méthode Zend_Search_Lucene::setDefaultSearchField($fieldName).

Example #2 Effectuer une recherche de mots multiples

  1. hello dolly

Recherche deux mots. Les deux mots sont facultatifs, au moins l'un des deux doit être présent dans le résultat

Example #3 Mots requis dans une requête

  1. +hello dolly

Recherche deux mots ; "hello" est requis, "dolly" est facultatif.

Example #4 Interdire des mots dans les documents recherchés

  1. +hello -dolly

Recherche avec deux mots ; "hello" est requis, 'dolly' est interdit. En d'autres termes, si le document contient "hello", mais contient aussi le mot "dolly", il ne sera pas retourné dans l'ensemble de résultats.

Example #5 Rechercher des phrases

  1. "hello dolly"

Recherche de la phrases "hello dolly" ; un document correspond uniquement si la chaine exacte est présente.

Example #6 Effectuer des recherches dans des champs en particulier

  1. title:"The Right Way" AND text:go

Recherche la phrase "The Right Way" au sein du champ title et le mot "go" dans la propriété text.

Example #7 Effectuer des recherches dans des champs en particulier aussi bien que dans le document complet

  1. title:"The Right Way" AND  go

Recherche la phrase "The Right Way" dans la propriété title et le mot "go" dans tous les champs du document.

Example #8 Effectuer des recherches dans des champs en particulier aussi bien que dans le document complet (Alternatif)

  1. title:Do it right

Recherche le mot "Do" dans la propriété title et les mots "it" and "right" dans tous les champs ; si l'un d'entre eux correspond, le document correspondra à un résultat de recherche.

Example #9 Faire des requêtes avec le joker "?"

  1. te?t

Recherche les mots correspondants au motif "te?t", où "?" est n'importe quel caractère unique.

Example #10 Faire des requêtes avec le joker "*"

  1. test*

Recherche les mots correspondants au motif "test*", où "*" est n'importe quelle séquence de 0 caractère ou plus.

Example #11 Rechercher une gamme inclusive de termes

  1. mod_date:[20020101 TO 20030101]

Recherche la gamme de termes (inclusif).

Example #12 Rechercher une gamme exclusive de termes

  1. title:{Aida to Carmen}

Recherche la gamme de termes (exculsif).

Example #13 Recherches floues

  1. roam~

Recherche foue pour le mot "roam".

Example #14 Recherches booléennes

  1. (framework OR library) AND php

Requête booléenne.

Toutes les requêtes supportées peuvent être construites via l'API de construction de requêtes de Zend_Search_Lucene. De plus l'analyse et la construction de requêtes peuvent être combinées :

Example #15 Combinaison d'analyse et de construction de requêtes

  1. $userQuery = Zend_Search_Lucene_Search_QueryParser::parse($queryStr);
  2. $query = new Zend_Search_Lucene_Search_Query_Boolean();
  3. $query->addSubquery($userQuery, true  /* required */);
  4. $query->addSubquery($constructedQuery, true  /* required */);
blog comments powered by Disqus