Une requête de correspondance d'expression est similaire à une requête de correspondance, à la différence qu'elle évalue les positions des jetons. Une ligne satisfait aux conditions de la requête uniquement si l'ordre et les positions des jetons dans la ligne correspondent à l'ordre et aux positions des jetons contenus dans le mot-clé. Si la méthode de tokenisation du champ que vous souhaitez interroger est une tokenisation floue, la requête de correspondance d'expression s'exécute avec une latence inférieure à celle d'une requête avec caractères génériques.
Scénarios
Utilisez une requête de correspondance d'expression pour rechercher des données contenant une expression spécifique dont les mots sont disposés dans un ordre précis. Combinez cette requête avec la tokenisation pour effectuer une recherche en texte intégral dans des scénarios spécifiques, tels que l'analyse de big data, la recherche de contenu et la recommandation personnalisée. Par exemple, vous pouvez interroger des phrases contenant une expression spécifique lors d'une recherche de contenu ou localiser des messages organisés selon une séquence précise dans des historiques de discussion.
Fonctionnalités
Une requête de correspondance d'expression utilise des correspondances approximatives pour interroger les données et évalue les positions des jetons. Par exemple, si la valeur de la colonne de type TEXT est « Hangzhou West Lake Scenic Area » dans une ligne et que le mot-clé spécifié est « Hangzhou Scenic Area », Tablestore renvoie la ligne lorsque vous utilisez une requête de correspondance. En revanche, lorsque vous utilisez une requête de correspondance d'expression, Tablestore ne renvoie pas la ligne. La distance entre « Hangzhou » et « Scenic Area » dans le mot-clé est de 0, mais la distance dans la colonne de cette ligne est de 2, car les deux mots « West » et « Lake » existent entre « Hangzhou » et « Scenic Area ».
Pour utiliser une requête de correspondance d'expression, spécifiez le nom du champ à interroger ainsi que le mot-clé. Une ligne satisfait aux conditions de la requête uniquement si l'ordre et les positions des jetons dans la ligne correspondent à l'ordre et aux positions des jetons contenus dans le mot-clé.
Lors de l'exécution d'une requête de correspondance d'expression, vous pouvez spécifier le poids à attribuer au champ interrogé pour calculer le score de pertinence des mots-clés basé sur BM25, les colonnes à renvoyer, l'indication de retour du nombre total de lignes satisfaisant aux conditions de la requête, ainsi que la méthode de tri des lignes renvoyées.
Opération API
Appelez l'opération Search ou ParallelScan et définissez le type de requête sur MatchPhraseQuery pour exécuter une requête de correspondance d'expression.
Paramètres
|
Paramètre |
Description |
|
fieldName |
Le nom du champ à faire correspondre. Vous pouvez exécuter des requêtes de correspondance d'expression sur les champs TEXT. |
|
text |
Le mot-clé utilisé pour faire correspondre la valeur du champ lors de l'exécution d'une requête de correspondance d'expression. Si le champ à faire correspondre est un champ TEXT, le mot-clé est tokenisé en plusieurs jetons selon le type d'analyseur spécifié lors de la création de l'index de recherche. Si vous ne spécifiez pas le type d'analyseur lors de la création de l'index de recherche, une tokenisation par mot unique est effectuée. Pour plus d'informations, consultez Tokenisation. Par exemple, si vous exécutez une requête de correspondance d'expression avec l'expression « this is », les résultats « ..., this is tablestore » et « this is a table » sont renvoyés. Les résultats « this table is ... » ou « is this a table » ne sont pas renvoyés. |
|
query |
Le type de la requête. Définissez le paramètre query sur matchPhraseQuery. |
|
offset |
La position à partir de laquelle la requête actuelle commence. |
|
limit |
Le nombre maximal de lignes que la requête actuelle doit renvoyer. Pour interroger uniquement le nombre de lignes satisfaisant aux conditions de la requête sans récupérer de données spécifiques, définissez le paramètre limit sur 0. |
|
getTotalCount |
Indique s'il faut renvoyer le nombre total de lignes satisfaisant aux conditions de la requête. La valeur par défaut de ce paramètre est false, ce qui signifie que le nombre total de lignes n'est pas renvoyé. Si vous définissez ce paramètre sur true, les performances de la requête sont dégradées. |
|
weight |
Le poids à attribuer au champ interrogé pour calculer le score de pertinence des mots-clés basé sur BM25. Ce paramètre est utilisé dans les scénarios de recherche en texte intégral. Si vous spécifiez un poids plus élevé pour le champ interrogé, le score de pertinence des mots-clés basé sur BM25 pour ce champ est plus élevé. La valeur de ce paramètre est un nombre à virgule flottante positif. Ce paramètre n'affecte pas le nombre de lignes renvoyées. En revanche, il influence les scores de pertinence des mots-clés basés sur BM25 des résultats de la requête. |
|
tableName |
Le nom de la table de données. |
|
indexName |
Le nom de l'index de recherche. |
|
columnsToGet |
Indique s'il faut renvoyer toutes les colonnes de chaque ligne satisfaisant aux conditions de la requête. Vous pouvez spécifier les champs returnAll et columns pour le paramètre columnsToGet. La valeur par défaut du champ returnAll est false, ce qui signifie que toutes les colonnes ne sont pas renvoyées. Dans ce cas, vous pouvez utiliser le champ columns pour spécifier les colonnes à renvoyer. Si vous ne spécifiez pas les colonnes à renvoyer, seules les colonnes de clé primaire sont renvoyées. Si vous définissez le champ returnAll sur true, toutes les colonnes sont renvoyées. |
Remarques
Search Index fournit uniquement une notation de pertinence BM25 de base et ne prend pas en charge les modèles de pertinence personnalisés.
Méthodes
Utilisez la console Tablestore, l'interface CLI Tablestore ou les SDK Tablestore pour exécuter une requête de correspondance d'expression.
Avant d'exécuter une requête de correspondance d'expression, assurez-vous d'avoir effectué les préparations suivantes :
-
Utilisez un compte Alibaba Cloud ou un utilisateur RAM disposant des autorisations requises pour les opérations Table Store. Pour accorder des autorisations à un utilisateur RAM, consultez Accorder des autorisations à un utilisateur RAM à l'aide d'une stratégie RAM.
Si vous utilisez un SDK ou un outil en ligne de commande, créez un AccessKey pour votre compte Alibaba Cloud ou utilisateur RAM si vous n'en possédez pas.
Vous avez créé une table de données.
Un Index de recherche a été créé pour la table de données.
Si vous utilisez un SDK, initialisez le client Tablestore.
Si vous utilisez l'outil en ligne de commande, téléchargez et démarrez l'outil, puis configurez la connexion à votre instance et sélectionnez la table cible. Pour plus d'informations, consultez Télécharger l'outil en ligne de commande, Démarrer l'outil et configurer les informations de connexion et Opérations sur les tables de données.
Facturation
L'interrogation des données à l'aide d'un index de recherche consomme du débit de lecture. Pour plus d'informations, consultez Mesure et facturation de Search Index.
FAQ
Références
Search Index prend en charge divers types de requêtes pour les interrogations de données multidimensionnelles, notamment la requête term, la requête terms, la requête match all, la requête match, la requête phrase match, la requête range, la requête prefix, la requête suffix, la requête wildcard, la requête token-based wildcard, la requête boolean, la requête geo, la requête nested, la recherche vectorielle, et la requête exists.
Lors de l'interrogation des données, vous pouvez trier et paginer l'ensemble de résultats ou effectuer un pliage (déduplication).
Pour l'analyse des données, telle que la recherche de la valeur maximale ou minimale, le calcul d'une somme ou le comptage des lignes, vous pouvez utiliser les fonctionnalités d'agrégation statistique ou de requête SQL.
Pour exporter rapidement des données indépendamment de l'ordre de l'ensemble de résultats, vous pouvez utiliser la fonctionnalité Parallel Scan.