Une requête par préfixe (PrefixQuery) permet de rechercher, dans un index de recherche, les lignes dont la valeur d'un champ commence par une chaîne spécifiée.
Vue d'ensemble
Une PrefixQuery identifie les valeurs de colonne qui débutent par un préfixe donné. Le comportement de la requête varie selon le type de données de la colonne :
Keyword : Type de données chaîne basique. Les performances se dégradent à mesure que le volume de données augmente. Ce type convient uniquement aux petits jeux de données.
FuzzyKeyword : Type optimisé pour les recherches floues, telles que les requêtes par préfixe. Les performances restent stables quel que soit le volume de données. Ce type est recommandé 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 un token résultant commence par le préfixe spécifié. En raison de l'imprévisibilité de la tokenisation, les résultats peuvent être aléatoires. Ce type de données est pris en charge uniquement à des fins de compatibilité et doit être utilisé avec prudence.
Choix du type de données
Le tableau suivant résume l'adéquation 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 |
Privilégié pour la majorité des cas d'usage |
|
Text |
Résultats imprévisibles liés à la tokenisation |
Déconseillé |
Exemples de correspondance par préfixe
Supposons qu'une colonne contienne les valeurs suivantes : hangzhou, beijing, shanghai et harbin.
Le préfixe
hangcorrespond àhangzhou, mais pas àbeijing,shanghaini àharbin.Le préfixe
hacorrespond à la fois àhangzhouet àharbin.
API
Effectuez une requête par préfixe via l'API Search ou ParallelScan. Le type de requête est PrefixQuery.
Paramètres
|
Paramètre |
Description |
|
query |
Type de 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 débute par le préfixe indiqué. |
|
getTotalCount |
Indique s'il faut retourner le nombre total de lignes correspondantes. La valeur par défaut est Définir ce paramètre sur |
|
weight |
Le poids de la requête doit être un nombre à virgule flottante positif. Dans le cadre d'une recherche plein texte, ce paramètre ajuste la contribution de la colonne au score de pertinence BM25. Une valeur plus élevée renforce l'influence de la colonne sur le classement. Ce paramètre n'affecte pas le jeu de résultats retourné, mais uniquement le score BM25 de chaque ligne dans les résultats. |
|
tableName |
Nom de la table de données. |
|
indexName |
Nom de l'index de recherche. |
|
columnsToGet |
Spécifie les colonnes à retourner pour chaque ligne correspondante. Configurez ce comportement à 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, assurez-vous de remplir les conditions préalables suivantes.
La PrefixQuery sur les colonnes FuzzyKeyword n'est actuellement prise en charge que via le SDK Tablestore. La console et l'outil en ligne de commande ne supportent 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 autorisations à un utilisateur RAM, consultez Accorder des permissions à un utilisateur RAM via une politique RAM.
Si vous utilisez un SDK ou un outil en ligne de commande, créez une AccessKey pour votre compte Alibaba Cloud ou votre utilisateur RAM si vous n'en possédez pas déjà une.
Vous avez créé une table de données.
Un Index de recherche a été créé pour la table de données.
En cas d'utilisation d'un SDK, initialisez le client Tablestore.
Pour l'outil en ligne de commande, téléchargez-le et lancez-le, 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 ainsi que Opérations sur les tables de données.
Facturation
L'interrogation de données via un index de recherche consomme du débit de lecture. Pour plus d'informations, consultez Mesure et facturation des index de recherche.
FAQ
Documents associés
L'index de recherche prend en charge divers types de requêtes multidimensionnelles, notamment la requête par terme, la requête par termes multiples, la requête match all, la requête match, la requête phrase match, 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 exists.
Lors de vos requêtes, vous avez la possibilité de trier et paginer le jeu de résultats ou d'appliquer une déduplication (collapsing).
Pour analyser vos données (recherche de valeurs maximales/minimales, sommes, comptages), utilisez les fonctionnalités d'agrégation statistique ou de requête SQL.
Pour exporter rapidement des données sans tenir compte de l'ordre du jeu de résultats, recourez à la fonctionnalité Parallel Scan.