Paramètres de recherche en texte intégral Neptune - Amazon Neptune

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

Amazon Neptune utilise les paramètres suivants pour spécifier des requêtes OpenSearch en texte intégral dans Gremlin et SPARQL :

  • queryType : (obligatoire) type de requête OpenSearch. (Pour une liste des types de requêtes, consultez la documentation OpenSearch). Neptune prend en charge les types de requêtes OpenSearch suivants :

    • simple_query_string : 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 : 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 : renvoie les documents contenant un préfixe spécifique dans un champ fourni.

    • fuzzy : 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.

    • termf : 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 rendre difficile la recherche de correspondances exactes pour les valeurs des champs de texte.

      Pour rechercher des valeurs de champ de texte, utilisez plutôt la requête de correspondance.

    • query_string : 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 par rapport auquel la recherche doit être effectuée. 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) requête à exécuter sur 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 paramètre OpenSearch index.max_result_window, 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 maxResults sur une valeur supérieure à la valeur OpenSearch index.max_result_window et que vous essayez d'extraire plus que les résultats index.max_result_window, OpenSearch échoue avec une erreur Result window is too large. 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 la documentation relative à la pertinence d'OpenSearch pour obtenir 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 paramètre OpenSearch index.max_result_window, qui est de 10 000 par défaut.

  • sortBy : paramètre facultatif qui vous permet de trier les résultats renvoyés par 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 résultats OpenSearch ne sont pas triés, et leur ordre n'est pas déterministe, ce qui signifie que la même requête peut renvoyer les é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 résultats OpenSearch sont triés du moins grand au plus grand ou du plus grand au moins grand (mode de tri 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 ni sortBy ni sortOrder ne sont présents, les résultats OpenSearch ne sont pas triés par défaut.