

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Paramètres de recherche en texte intégral Neptune
<a name="full-text-search-parameters"></a>

Amazon Neptune utilise les paramètres suivants pour spécifier des OpenSearch requêtes en texte intégral dans Gremlin et SPARQL :
+ **`queryType`**— (*Obligatoire*) Type de OpenSearch requête. (Pour une liste des types de requêtes, consultez la [OpenSearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/full-text-queries.html)). Neptune prend en charge les types de OpenSearch requêtes suivants :
  + [simple\$1query\$1string](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html) : renvoie les documents en fonction d'une chaîne de requête fournie, en utilisant un analyseur avec une syntaxe Lucene limitée, mais tolérante aux pannes. Il s'agit du type de requête par défaut.

    Cette requête utilise une syntaxe simple pour analyser et diviser la chaîne de requête fournie en termes basés sur des opérateurs spéciaux. La requête analyse ensuite chaque terme indépendamment avant de renvoyer les documents correspondants.

    Bien que sa syntaxe soit plus limitée que la requête `query_string`, la requête `simple_query_string` ne renvoie pas d'erreurs pour la syntaxe non valide. Au lieu de cela, il ignore toutes les parties non valides de la chaîne de requête.
  + [match](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html) : la requête `match` est la requête standard permettant d'effectuer une recherche en texte intégral, y compris les options de correspondance partielle.
  + [prefix](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html) : renvoie les documents contenant un préfixe spécifique dans un champ fourni.
  + [fuzzy](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html) : renvoie les documents contenant des termes similaires au terme de recherche, tels que mesurés par une distance de modification de Levenshtein.

    Une distance d'édition est le nombre de modifications d'un caractère nécessaires pour transformer un terme en un autre. Ces changements peuvent inclure :
    + Modification d'un caractère (car changé en bar).
    + Suppression d'un caractère (marre changé en mare).
    + Insertion d'un caractère (malade changé en maladie).
    + Transposition de deux caractères adjacents (chien changé en chine).

    Pour trouver des termes similaires, la requête approximative crée un ensemble de toutes les variations et extensions possibles du terme recherché à l'intérieur d'une distance d'édition spécifiée, puis renvoie des correspondances exactes pour chacune de ces variantes.
  + [term](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html)f : renvoie les documents qui contiennent une correspondance exacte avec un terme indiqué dans l'un des champs spécifiés.

    Vous pouvez utiliser la requête `term` pour rechercher des documents en fonction d'une valeur précise telle qu'un prix, un ID de produit ou un nom d'utilisateur.
**Avertissement**  
Évitez d'utiliser la requête de terme pour les champs de texte. Par défaut, OpenSearch modifie les valeurs des champs de texte dans le cadre de son analyse, ce qui peut compliquer la recherche de correspondances exactes entre les valeurs des champs de texte.  
Pour rechercher des valeurs de champ de texte, utilisez plutôt la requête de correspondance.
  + [query\$1string](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html) : renvoie les documents en fonction d'une chaîne de requête fournie, en utilisant un analyseur avec une syntaxe stricte (syntaxe Lucene).

    Cette requête utilise une syntaxe pour analyser et diviser la chaîne de requête fournie en fonction des opérateurs, tels que AND ou NOT. La requête analyse ensuite chaque texte fractionné indépendamment avant de renvoyer les documents correspondants.

    Vous pouvez utiliser la requête `query_string` pour créer une recherche complexe comprenant des caractères génériques, des recherches dans plusieurs champs, etc. Bien qu'elle soit polyvalente, la requête est stricte et renvoie une erreur si la chaîne de requête inclut une syntaxe non valide.
**Avertissement**  
Dans la mesure où elle renvoie une erreur pour toute syntaxe non valide, nous vous déconseillons d'utiliser la requête `query_string` pour les zones de recherche.  
Si vous n'avez pas besoin de prendre en charge une syntaxe de requête, envisagez d'utiliser la requête `match`. Si vous avez besoin des fonctionnalités d'une syntaxe de requête, utilisez la requête `simple_query_string`, qui est moins stricte.
+ **`field`**— Champ OpenSearch dans lequel effectuer la recherche. Ce paramètre ne peut être omis que si le `queryType` l'autorise (comme le font `simple_query_string` et `query_string`), auquel cas la recherche est effectuée par rapport à tous les champs. Dans Gremlin, il est implicite.

  Plusieurs champs peuvent être spécifiés si la requête l'autorise, comme le font `simple_query_string` et `query_string`.
+ **`query`**— (*Obligatoire*) La requête à exécuter OpenSearch. Le contenu de ce champ peut varier en fonction du type de requête (queryType). Les différents types de requête acceptent des syntaxes différentes, comme le fait `Regexp` par exemple. Dans Gremlin, `query` est implicite.
+ **`maxResults`** : nombre maximal de résultats à renvoyer. La valeur par défaut est le `index.max_result_window` OpenSearch paramètre, qui est lui-même défini par défaut sur 10 000. Le paramètre `maxResults` peut spécifier n'importe quel nombre inférieur à cela.
**Important**  
Si vous définissez une valeur supérieure `maxResults` à cette OpenSearch `index.max_result_window` valeur et que vous essayez de récupérer plus que des `index.max_result_window` résultats, cela OpenSearch échoue avec une `Result window is too large` erreur. Cependant, Neptune gère cette situation en douceur sans propager l'erreur. Gardez cela à l'esprit si vous essayez d'obtenir plus `index.max_result_window` résultats.
+ **`minScore`** : score minimum qu'un résultat de recherche doit avoir pour être renvoyé. Consultez [OpenSearchla documentation sur la pertinence](https://www.elastic.co/guide/en/elasticsearch/guide/current/scoring-theory.html) pour une explication de la notation des résultats.
+ **`batchSize`** : Neptune récupère toujours les données par lots (la taille par défaut du lot est de 100). Vous pouvez utiliser ce paramètre pour régler les performances. La taille du lot ne peut pas dépasser le `index.max_result_window` OpenSearch paramètre, qui est par défaut de 10 000.
+ **`sortBy`**— Paramètre facultatif qui permet de trier les résultats renvoyés OpenSearch selon l'une des méthodes suivantes :
  + *Champ de chaîne particulier dans le document* :  

    Par exemple, dans une requête SPARQL, vous pouvez spécifier :

    ```
        neptune-fts:config neptune-fts:sortBy foaf:name .
    ```

    Dans une requête Gremlin similaire, vous pouvez spécifier :

    ```
        .withSideEffect('Neptune#fts.sortBy', 'name')
    ```
  + Champ particulier autre qu'une chaîne (`long`, `double`, etc.) dans le document :  

    Notez que lorsque vous effectuez un tri sur un champ autre qu'une chaîne, vous devez ajouter `.value` au nom de ce champ pour le différencier d'un champ de chaîne.

    Par exemple, dans une requête SPARQL, vous pouvez spécifier :

    ```
        neptune-fts:config neptune-fts:sortBy foaf:name.value .
    ```

    Dans une requête Gremlin similaire, vous pouvez spécifier :

    ```
        .withSideEffect('Neptune#fts.sortBy', 'name.value')
    ```
  + `score` : tri par score de correspondance (valeur par défaut).

    Si le paramètre `sortOrder` est présent mais que `sortBy` ne l'est pas, les résultats sont triés par `score` dans l'ordre spécifié par `sortOrder`.
  + `id` : tri par ID, c'est-à-dire l'URI de sujet SPARQL ou l'ID de sommet ou d'arête Gremlin.

    Par exemple, dans une requête SPARQL, vous pouvez spécifier :

    ```
        neptune-fts:config neptune-fts:sortBy 'Neptune#fts.entity_id' .
    ```

    Dans une requête Gremlin similaire, vous pouvez spécifier :

    ```
        .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.entity_id')
    ```
  + `label` : tri par étiquette.

    Par exemple, dans une requête SPARQL, vous pouvez spécifier :

    ```
        neptune-fts:config neptune-fts:sortBy 'Neptune#fts.entity_type' .
    ```

    Dans une requête Gremlin similaire, vous pouvez spécifier :

    ```
        .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.entity_type')
    ```
  + `doc_type` : tri par type de document (SPARQL ou Gremlin).

    Par exemple, dans une requête SPARQL, vous pouvez spécifier :

    ```
        neptune-fts:config neptune-fts:sortBy 'Neptune#fts.document_type' .
    ```

    Dans une requête Gremlin similaire, vous pouvez spécifier :

    ```
        .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.document_type')
    ```

  Par défaut, les OpenSearch résultats ne sont pas triés et leur ordre n'est pas déterministe, ce qui signifie qu'une même requête peut renvoyer des éléments dans un ordre différent à chaque fois qu'elle est exécutée. Pour cette raison, si le jeu de résultats est supérieur à `max_result_window`, un sous-ensemble tout à fait différent du total des résultats peut être renvoyé chaque fois qu'une requête est exécutée. Cependant, en triant, vous pouvez rendre les résultats de différentes séries plus comparables directement.

  Si aucun paramètre `sortOrder` n'accompagne `sortBy`, l'ordre décroissant (`DESC`) du plus au moins grand est utilisé.
+ **`sortOrder`**— Paramètre facultatif qui vous permet de spécifier si les OpenSearch résultats sont triés du plus petit au plus grand ou du plus grand au plus petit (valeur par défaut) :

****
  + `ASC` : ordre croissant, du moins grand au plus grand.
  + `DESC` : ordre décroissant, du plus grand au plus petit.

    Il s'agit de la valeur par défaut, utilisée lorsque le paramètre `sortBy` est présent, alors que `sortOrder` ne l'est pas.

  Si aucun des deux `sortBy` n'`sortOrder`est présent, les OpenSearch résultats ne sont pas triés par défaut.