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

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

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

Mots requis dans une requête

    +hello dolly

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

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.

Rechercher des phrases

    "hello dolly"

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

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.

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.

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.

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.

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.

Rechercher une gamme inclusive de termes

    mod_date:[20020101 TO 20030101]

Recherche la gamme de termes (inclusif).

Rechercher une gamme exclusive de termes

    title:{Aida to Carmen}

Recherche la gamme de termes (exculsif).

Recherches floues

    roam~

Recherche foue pour le mot "roam".

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 :

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 */);