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
hangcorrespond àhangzhou, mais pas àbeijing,shanghainiharbin.Le préfixe
hacorrespond à la fois àhangzhouet à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 Définir ce paramètre sur |
|
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 Par défaut, Définissez |
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.
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.
-
Utilisez un compte Alibaba Cloud ou un utilisateur RAM disposant des permissions nécessaires pour les opérations Table Store. Pour accorder des permissions à un utilisateur RAM, consultez la rubrique Accorder des permissions à un utilisateur RAM à l'aide d'une politique 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 encore.
Vous avez créé une table de données.
Un Search Index 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-le et démarrez-le, puis configurez la connexion à votre instance et sélectionnez la table cible. Pour plus d'informations, consultez les rubriques 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 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
Search Index prend en charge plusieurs types de requêtes pour l'interrogation multidimensionnelle des données, notamment la requête par terme, la requête par termes multiples, la requête de correspondance totale, la requête par correspondance, la requête par correspondance d'expression, la requête par plage, la requête par préfixe, la requête par suffixe, la requête par caractère générique, la requête par caractère générique basé sur les tokens, 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 le jeu de résultats, ou appliquer un regroupement (déduplication).
Pour analyser vos données (recherche de la valeur maximale ou minimale, calcul d'une somme, comptage de lignes), utilisez les fonctionnalités d'agrégation statistique ou de requête SQL.
Afin d'exporter rapidement des données sans tenir compte de l'ordre du jeu de résultats, exploitez la fonctionnalité Parallel Scan.