La clause de requête est obligatoire dans toute demande de recherche. Elle définit les termes recherchés et le champ d'index ciblé. Combinez plusieurs conditions à l'aide d'opérateurs logiques pour élaborer des requêtes complexes.
Par exemple, combinez les champs title et subject de type TEXT pour créer le champ d'index composite default. Recherchez ensuite via le champ d'index default afin de récupérer les documents dont le champ title ou subject contient les termes de recherche.
Vous pouvez aussi utiliser uniquement le champ title pour créer le champ d'index title_search. Les recherches effectuées sur le champ d'index title_search ne renvoient que les documents dont le champ title contient les termes de recherche.
Syntaxe
Une clause de requête adopte l'une des formes suivantes :
| Type de requête | Syntaxe |
|---|---|
| Recherche par mot-clé | index:'<search query>' ^ boost |
| Recherche géographique par plage | index:'circle (<longitude>, <latitude>, <radius>)' |
| Recherche numérique par plage | index:[<value1>, <value2>] |
Paramètres
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
index |
String | Oui | Champ d'index ciblé par la recherche. Configuré lors de la définition du schéma d'index. |
search query |
String | Oui | Terme ou expression à rechercher. Placez-le entre guillemets simples (') ou doubles (""). |
boost |
INT | Non | Pondération de pertinence de la condition de requête. Valeurs valides : 0–99. Par défaut : 99. Les valeurs inférieures à 0 sont traitées comme 0 ; les valeurs supérieures à 99 sont traitées comme 99. Ce paramètre prend effet uniquement si exact_match_boost() est configuré dans une expression de tri approximatif. |
Opérateurs logiques
Combinez plusieurs conditions de requête à l'aide des opérateurs suivants. Tous les opérateurs doivent être en majuscules.
| Opérateur | Logique | Priorité (de la plus faible à la plus élevée) | Exemple |
|---|---|---|---|
RANK |
Les documents correspondant à la seconde condition sont classés plus haut | 1 (la plus faible) | title:'cloud' RANK title:'search' |
OR |
L'une ou l'autre condition doit correspondre | 2 | title:'cloud' OR title:'search' |
AND |
Les deux conditions doivent correspondre | 3 | title:'cloud' AND type:'1' |
ANDNOT |
La première condition doit correspondre ; les documents correspondant à la seconde sont exclus | 4 | title:'cloud' ANDNOT title:'storage' |
() |
Regroupement — évalué en premier | 5 (la plus élevée) | (title:'a' OR title:'b') AND type:'1' |
Le caractère | est une forme alternative de OR :
query=title:'Peking University'|'Zhejiang University'
Requêtes de phrase
Placez la requête de recherche entre guillemets doubles pour effectuer une requête de phrase. Dans ce type de requête, tous les termes restent connectés et conservent leur ordre initial avant et après l'analyse.
query=title:"Peking University"
Cette opération renvoie uniquement les documents dont le titre contient l'expression « Peking University ». Les documents contenant « University in Beijing » ne sont pas renvoyés.
Exemples
Recherche sur un seul champ
query=title:'Peking University'
AND : les deux conditions doivent correspondre
query=title:'Peking University' AND title:'Zhejiang University'
OR avec AND : conditions mixtes
query=(title:'Peking University' OR title:'Zhejiang University') AND type:'1'
ANDNOT avec RANK : exclusion et pondération
query=(title:'Peking University' ANDNOT title:'Tsinghua') RANK title:'Principal'
// Fine sort expression: text_relevance(title)
Les documents dont le titre contient « Peking University » mais pas « Tsinghua » sont renvoyés. Parmi eux, ceux dont le titre contient également « Principal » sont classés plus haut.
Recherche sur un champ d'index de type ARRAY
// arr_index_1 is an index built on an INT ARR field.
// Returns documents where arr_index_1 contains the value 1.
query=arr_index_1:'1'
Notes d'utilisation
La clause de requête est obligatoire et ne peut pas être vide.
Placez les requêtes de recherche entre guillemets simples (
') ou doubles (""). L'absence de guillemet provoque une erreur de requête ou des résultats inattendus.Seuls les champs
TEXTetSHORT_TEXTpeuvent être combinés pour créer un index composite.Pour savoir comment les termes sont analysés et tokenisés, consultez la rubrique Analyseur intégré.
Pour les requêtes géographiques et numériques par plage, consultez la rubrique Recherche par plage.