Une requête de correspondance d'expression est similaire à une requête de correspondance, mais elle évalue également la position des jetons. Une ligne satisfait aux conditions de la requête uniquement si l'ordre et la position des jetons dans la ligne correspondent à ceux des jetons contenus dans le mot-clé. Si la méthode de tokenisation du champ interrogé est une tokenisation floue, la requête de correspondance d'expression offre 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 conversation.
Fonctionnalités
Une requête de correspondance d'expression utilise des correspondances approximatives pour interroger les données et évalue la position 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 mots « West » et « Lake » se trouvent entre « Hangzhou » et « Scenic Area ».
Pour utiliser une requête de correspondance d'expression, vous devez spécifier le nom du champ à interroger ainsi que le mot-clé. Une ligne satisfait aux conditions de la requête uniquement si l'ordre et la position des jetons dans la ligne correspondent à ceux 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, indiquer si le nombre total de lignes satisfaisant aux conditions de la requête doit être retourné, et définir 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 | Nom du champ à faire correspondre. Vous pouvez exécuter des requêtes de correspondance d'expression sur les champs TEXT. |
text | 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 divisé 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 | Type de la requête. Définissez le paramètre query sur matchPhraseQuery. |
offset | Position à partir de laquelle la requête actuelle commence. |
limit | 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 les données spécifiques, définissez le paramètre limit sur 0. |
getTotalCount | Indique si le nombre total de lignes satisfaisant aux conditions de la requête doit être renvoyé. 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 réduites. |
weight | 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 | Nom de la table de données. |
indexName | Nom de l'index de recherche. |
columnsToGet | Indique si toutes les colonnes de chaque ligne satisfaisant aux conditions de la requête doivent être renvoyées. 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 retourné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 votre 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 de terme, la requête de termes, la requête de correspondance totale, la requête de correspondance, la requête de correspondance d'expression, la requête de plage, la requête de préfixe, la requête de suffixe, la requête avec caractères génériques, la requête avec caractères génériques basée sur les jetons, la requête booléenne, la requête géographique, la requête imbriquée, la recherche vectorielle, et la requête d'existence.
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.