Tous les produits
Search
Centre de documentation

Tablestore:Requête de correspondance d'expression

Dernière mise à jour :Aug 18, 2026

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 :

Utiliser la console Tablestore

Utilisez la console Tablestore pour exécuter une requête de correspondance d'expression.

  1. Accédez à l'onglet Index Management.

    1. Connectez-vous à la console Table Store.

    2. Dans la barre de navigation supérieure, sélectionnez un groupe de ressources et une région.

    3. Sur la page Overview, cliquez sur le nom de l'instance ou sur Instance Management dans la colonne Actions.

    4. Sous l'onglet Instance Details, dans l'onglet Data Table List, cliquez sur le nom de la table de données ou sur Index Management dans la colonne Actions.

  2. Sous l'onglet Index Management, localisez l'index de recherche cible et cliquez sur Search dans la colonne Actions.

  3. Dans la boîte de dialogue Search, spécifiez les conditions de la requête.

    1. Par défaut, toutes les colonnes sont renvoyées. Pour renvoyer des colonnes spécifiques, désactivez l'option Retrieve All Columns et saisissez les noms des colonnes, séparés par des virgules.

      Remarque

      Par défaut, Table Store renvoie les colonnes de clé primaire de la table de données.

    2. Sélectionnez un opérateur logique : And, Or ou Not.

      Si vous sélectionnez And, la requête renvoie les données satisfaisant à toutes les conditions spécifiées. Si vous sélectionnez Or, la requête renvoie les données satisfaisant à au moins une des conditions spécifiées. Si vous sélectionnez Not, la requête renvoie les données ne satisfaisant pas aux conditions spécifiées.

    3. Sélectionnez un champ indexé de type Text et cliquez sur Add.

    4. Définissez le type de requête pour le champ indexé sur Match Phrase Query (MatchPhraseQuery) et saisissez la valeur à rechercher.

    5. Par défaut, le tri est désactivé. Pour trier les résultats selon un champ spécifique, activez l'option Enable Sorting, ajoutez le champ de tri et configurez l'ordre de tri.

    6. Par défaut, l'agrégation est désactivée. Pour effectuer une agrégation statistique sur un champ spécifique, activez l'option Enable Aggregation, ajoutez le champ d'agrégation et configurez les paramètres d'agrégation.

  4. Cliquez sur OK.

    Les résultats de la requête s'affichent sous l'onglet Index Management.

Utiliser l'interface CLI Tablestore

Utilisez l'interface CLI Tablestore pour exécuter la commande search afin d'interroger des données à l'aide d'index de recherche. Pour plus d'informations, consultez Index de recherche.

  1. Exécutez la commande search pour utiliser l'index de recherche search_index afin d'interroger les données et renvoyer toutes les colonnes indexées de chaque ligne satisfaisant aux conditions de la requête.

    search -n search_index --return_all_indexed
  2. Saisissez les conditions de la requête comme indiqué :

    {
        "Offset": -1,
        "Limit": 10,
        "Collapse": null,
        "Sort": null,
        "GetTotalCount": true,
        "Token": null,
        "Query": {
            "Name": "MatchPhraseQuery",
            "Query": {
                "FieldName": "col_text",
                "Text": "this is"
            }
        }
    }

Utiliser les SDK Tablestore

Exécutez une requête de correspondance d'expression à l'aide des SDK Tablestore suivants : SDK Tablestore pour Java, SDK Tablestore pour Go, SDK Tablestore pour Python, SDK Tablestore pour Node.js, SDK Tablestore pour .NET et SDK Tablestore pour PHP. Cet exemple utilise le SDK Tablestore pour Java.

String tableName = "example_table";
String indexName = "example_index";

MatchPhraseQuery matchPhraseQuery = new MatchPhraseQuery();
matchPhraseQuery.setFieldName("description");
matchPhraseQuery.setText("tablestore durable");

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchPhraseQuery);
searchQuery.setSort(new Sort(Collections.singletonList(new ScoreSort())));
searchQuery.setLimit(10);
searchQuery.setTrackTotalCount(SearchQuery.TRACK_TOTAL_COUNT);

SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);

SearchResponse response = client.search(request);
for (SearchHit hit : response.getSearchHits()) {
    System.out.println(hit.getRow());
    System.out.println(hit.getScore());
}

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