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