|
|
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 #1 Effectuer une requête pour un mot seul
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_Lucenerecherche à travers tous les champs. Ce comportement peut être modifié en utilisant la méthode Zend_Search_Lucene::setDefaultSearchField($fieldName).
Exemple #2 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 #3 Mots requis dans une requête
+hello dolly
Recherche deux mots ; "hello" est requis, "dolly" est facultatif.
Exemple #4 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 #5 Rechercher des phrases
"hello dolly"
Recherche de la phrases "hello dolly" ; un document correspond uniquement si la chaine exacte est présente.
Exemple #6 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 #7 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 #8 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 #9 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 #10 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 #11 Rechercher une gamme inclusive de termes
mod_date:[20020101 TO 20030101]
Recherche la gamme de termes (inclusif).
Exemple #12 Rechercher une gamme exclusive de termes
title:{Aida to Carmen}
Recherche la gamme de termes (exculsif).
Exemple #13 Recherches floues
roam~
Recherche foue pour le mot "roam".
Exemple #14 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 #15 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 */);
|
|
Copyright © 2005-2011 Zend Technologies Inc (compiled by mikaelkael with ZFDocumentor - SVN 21540).

