Tous les produits
Search
Centre de documentation

Tablestore:Prefix query

Dernière mise à jour :Oct 10, 2026

Une requête par préfixe (PrefixQuery) recherche, dans un index de recherche, les lignes dont la valeur d'un champ commence par une chaîne spécifiée.

Présentation

Une PrefixQuery correspond aux valeurs de colonne qui commencent par un préfixe donné. Le comportement de la requête dépend du type de données de la colonne :

  • Keyword : type de données de chaîne basique. Les performances de la requête se dégradent à mesure que le volume de données augmente. Ce type convient uniquement aux petits jeux de données.

  • FuzzyKeyword : type de données optimisé pour les recherches approximatives, comme les requêtes par préfixe. Les performances restent stables quel que soit le volume de données. Nous recommandons ce type pour la plupart des scénarios de requête par préfixe.

  • Text : les valeurs de la colonne sont tokenisées avant l'indexation. Une ligne correspond si au moins l'un des tokens obtenus commence par le préfixe spécifié. En raison de l'imprévisibilité de la tokenisation, les résultats peuvent varier. Ce type de données n'est pris en charge que pour des raisons de compatibilité et doit être utilisé avec prudence.

Choix du type de données

Le tableau suivant résume la pertinence de chaque type de données pour les requêtes par préfixe.

Type

Performances

Recommandation

Keyword

Dégradation proportionnelle au volume de données

Réservé aux petits jeux de données

FuzzyKeyword

Stabilité garantie indépendamment du volume de données

Recommandé pour la majorité des cas d'usage

Text

Résultats imprévisibles liés à la tokenisation

Déconseillé

Exemples de correspondance de préfixe

Supposons qu'une colonne contienne les valeurs suivantes : hangzhou, beijing, shanghai et harbin.

  • Le préfixe hang correspond à hangzhou, mais pas à beijing, shanghai ni harbin.

  • Le préfixe ha correspond à la fois à hangzhou et à harbin.

API

Vous pouvez exécuter une requête par préfixe à l'aide de l'API Search ou ParallelScan. Le type de requête est PrefixQuery.

Paramètres

Paramètre

Description

query

Type de la requête. Définissez cette valeur sur PrefixQuery.

fieldName

Nom de la colonne cible.

prefix

Chaîne de préfixe à comparer aux valeurs de la colonne.

Pour les colonnes de type Text, les valeurs sont tokenisées avant la comparaison. Une ligne correspond si au moins un token commence par le préfixe spécifié.

getTotalCount

Indique s'il faut renvoyer le nombre total de lignes correspondantes. La valeur par défaut est false.

Définir ce paramètre sur true augmente la latence de la requête.

weight

Pondération de la requête, exprimée sous forme de nombre décimal positif. Dans le cadre d'une recherche plein texte, ce paramètre ajuste la contribution de la colonne au score de pertinence BM25. Plus la valeur est élevée, plus l'influence de la colonne sur le classement est importante.

Ce paramètre ne modifie pas le jeu de résultats renvoyé, mais uniquement le score BM25 de chaque ligne.

tableName

Nom de la table de données.

indexName

Nom de l'index de recherche.

columnsToGet

Colonnes à renvoyer pour chaque ligne correspondante. Configurez ce paramètre à l'aide des paramètres returnAll et columns.

Par défaut, returnAll vaut false. Si columns n'est pas défini, seules les colonnes de clé primaire sont renvoyées. Si columns est défini, seules les colonnes spécifiées sont renvoyées.

Définissez returnAll sur true pour renvoyer toutes les colonnes.

Utilisation

Les requêtes par préfixe s'exécutent depuis la console Tablestore, l'outil en ligne de commande ou un SDK. Avant de commencer, vérifiez que les conditions préalables suivantes sont remplies.

Important

L'utilisation de PrefixQuery sur des colonnes FuzzyKeyword n'est actuellement prise en charge que via le SDK Tablestore. La console et l'outil en ligne de commande ne prennent en charge que les colonnes Keyword.

Utiliser la console

  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. Dans l'onglet Index Management, recherchez le Search Index cible et cliquez sur Search dans la colonne Actions.

  3. Dans la boîte de dialogue Search, configurez les conditions de la requête.

    1. Par défaut, toutes les colonnes sont renvoyées. Pour ne renvoyer que certaines colonnes, désactivez 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 choisissez And, la requête renvoie les données satisfaisant toutes les conditions spécifiées. Avec Or, elle renvoie les données satisfaisant au moins l'une des conditions. Enfin, Not permet de renvoyer les données ne correspondant pas aux conditions indiquées.

    3. Sélectionnez un champ d'index et cliquez sur Add.

    4. Définissez le type de requête sur Prefix query (PrefixQuery) et saisissez la valeur du préfixe.

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

    6. L'agrégation est désactivée par défaut. Pour effectuer une agrégation statistique sur un champ particulier, activez Enable Aggregation, ajoutez le champ concerné et configurez les paramètres d'agrégation.

  4. Cliquez sur OK.

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

Utiliser l'outil en ligne de commande

Exécutez la commande search pour interroger des données à l'aide d'un index de recherche. Pour plus d'informations, consultez la rubrique Index de recherche.

Important

L'outil en ligne de commande prend en charge les requêtes par préfixe uniquement sur les colonnes Keyword, et non sur les colonnes FuzzyKeyword.

  1. Exécutez la commande search pour interroger les données via l'index de recherche search_index et renvoyer toutes les colonnes indexées.

    search -n search_index --return_all_indexed
  2. Saisissez les conditions de la requête lorsque vous y êtes invité. L'exemple de code suivant illustre cette opération :

    {
        "Offset": -1,
        "Limit": 10,
        "Collapse": null,
        "Sort": null,
        "GetTotalCount": true,
        "Token": null,
        "Query": {
            "Name": "PrefixQuery",
            "Query": {
                "FieldName": "col_keyword",
                "Prefix": "hangzhou"
            }
        }
    }

Utiliser un SDK

Vous pouvez exécuter une requête par préfixe à l'aide du SDK Java, du SDK Go, du SDK Python, du SDK Node.js, du SDK .NET ou du SDK PHP. L'exemple suivant utilise le SDK Java.

Remarque

L'instruction de requête est identique pour les types Keyword et FuzzyKeyword. Seule la nature du type de données de la colonne interrogée diffère.

L'exemple suivant recherche les lignes dont le champ category est de type FuzzyKeyword et commence par hang. La requête renvoie jusqu'à 10 lignes ainsi que le nombre total de lignes correspondantes.

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

PrefixQuery prefixQuery = new PrefixQuery();
prefixQuery.setFieldName("category");
prefixQuery.setPrefix("hang");

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(prefixQuery);
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);
System.out.println(response.getTotalCount());
System.out.println(response.getRows());

Facturation

L'interrogation de données via un Search Index consomme du débit en lecture. Pour plus d'informations, consultez la rubrique Mesure et facturation de Search Index.

FAQ

Documents associés