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.

Exemple 12. Effectuer une requête pour un mot seul

hello

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


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).

Exemple 13. Effectuer une recherche de mots multiples

hello dolly

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


Exemple 14. Mots requis dans une requête

+hello dolly

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


Exemple 15. Interdire des mots dans les documents recherchés

+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.


Exemple 16. Rechercher des phrases

"hello dolly"

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


Exemple 17. Effectuer des recherches dans des champs en particulier

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.


Exemple 18. Effectuer des recherches dans des champs en particulier aussi bien que dans le document complet

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.


Exemple 19. Effectuer des recherches dans des champs en particulier aussi bien que dans le document complet (Alternatif)

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.


Exemple 20. Faire des requêtes avec le joker "?"

te?t

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


Exemple 21. Faire des requêtes avec le joker "*"

test*

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


Exemple 22. Rechercher une gamme inclusive de termes

mod_date:[20020101 TO 20030101]

Recherche la gamme de termes (inclusif).


Exemple 23. Rechercher une gamme exclusive de termes

title:{Aida to Carmen}

Recherche la gamme de termes (exculsif).


Exemple 24. Recherches floues

roam~

Recherche foue pour le mot "roam".


Exemple 25. Recherches booléennes

(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 :

Exemple 26. Combinaison d'analyse et de construction de requêtes

$userQuery = Zend_Search_Lucene_Search_QueryParser::parse($queryStr);
$query = new Zend_Search_Lucene_Search_Query_Boolean();
$query->addSubquery($userQuery, true  /* required */);
$query->addSubquery($constructedQuery, true  /* required */);