Les index de recherche prennent en charge trois types de données liés aux chaînes : Keyword, FuzzyKeyword et Text. Sélectionnez le type approprié en fonction de vos besoins en matière de requête.
Contexte
Dans les tables de données Tablestore, le type de chaîne principal est String, équivalent au type string en C++ et Java. Les index de recherche subdivisent ce type unique en trois variantes spécialisées pour prendre en charge différents modèles de requête :
|
Type |
Idéal pour |
|
Keyword |
Correspondance exacte, requêtes de plage, tri et agrégation |
|
FuzzyKeyword |
Requêtes avec caractères génériques, préfixes et suffixes haute performance, quelle que soit la taille du jeu de données |
|
Text |
Recherche en texte intégral avec tokenisation et score de pertinence |
Mappages de types de données
Le type String dans les tables de données se mappe directement sur Keyword, FuzzyKeyword ou Text dans les index de recherche. Grâce à la fonctionnalité de colonne virtuelle, vous pouvez également mapper les types Integer ou Double sur l'un de ces trois types de chaîne.
|
Type de données dans les tables |
Méthode |
Type de données dans les index de recherche |
|
String |
Utilisation directe |
Keyword |
|
FuzzyKeyword |
||
|
Text |
||
|
Integer |
Colonne virtuelle |
Keyword |
|
FuzzyKeyword |
||
|
Text |
||
|
Double |
Colonne virtuelle |
Keyword |
|
FuzzyKeyword |
||
|
Text |
Types de données
Keyword
Le type Keyword traite une chaîne comme une valeur unique et indivisible, à l'instar des champs string dans les bases de données relationnelles. Il prend en charge les requêtes term, terms, range, wildcard, prefix et exists (requête de valeur nulle), ainsi que le tri et l'agrégation statistique (y compris GroupBy).
Les candidats idéaux pour le type Keyword incluent les ID utilisateur, les codes d'état, les adresses e-mail, les codes pays et tout champ pour lequel vous interrogez des valeurs exactes ou exécutez des agrégations.
Sur les jeux de données contenant plus d'un million d'entrées, les performances des requêtes wildcard et prefix se dégradent à mesure que le volume de données augmente. Utilisez le type FuzzyKeyword si une correspondance floue haute performance à grande échelle est requise.
Text
Le type Text est conçu pour la recherche en texte intégral. Avant l'indexation, le système divise une chaîne en jetons à l'aide de la méthode de tokenisation que vous configurez, puis indexe chaque jeton individuellement. Au moment de la requête, la chaîne de requête subit la même tokenisation avant d'être comparée à l'index.
Étant donné que le type Text indexe des jetons plutôt que la valeur d'origine, il prend en charge le score de pertinence, la mise en surbrillance et le résumé des résultats, ainsi que les requêtes match et match phrase. En revanche, il ne prend pas en charge les requêtes term exactes, le tri ni l'agrégation.
Les candidats idéaux pour le type Text incluent les descriptions de produits, le contenu des articles, les avis des utilisateurs et tout champ dans lequel vous recherchez des mots ou des phrases au sein d'une chaîne plus longue.
Pour connaître les méthodes de tokenisation disponibles, consultez Tokenisation.
FuzzyKeyword
Le type FuzzyKeyword est optimisé pour les requêtes wildcard, prefix et suffix. Il préstocke les sous-chaînes de chaque valeur de champ dans l'index, de sorte que les requêtes analysent une structure d'index compacte plutôt que de parcourir les valeurs ligne par ligne. Les performances des requêtes wildcard et prefix restent constamment rapides, quelle que soit la taille du jeu de données.
Les candidats idéaux pour le type FuzzyKeyword incluent les messages de journal, les chemins d'accès aux fichiers, les SKU de produits et tout champ dans lequel les utilisateurs saisissent des chaînes partielles pour effectuer une recherche.
Pour les requêtes suffix, utilisez SuffixQuery avec le type FuzzyKeyword. Une autre solution consiste à inverser les données et à exécuter PrefixQuery sur un champ Keyword, mais cette approche offre des performances inférieures.
Les champs FuzzyKeyword ne prennent pas en charge le tri ni l'agrégation statistique. Pour trier ou agréger un champ FuzzyKeyword, utilisez la fonctionnalité de colonne virtuelle pour le mapper sur un type Keyword.
Si un champ nécessite plusieurs fonctionnalités de requête, telles que la requête term, la requête floue haute performance et la recherche en texte intégral, utilisez la fonctionnalité de colonne virtuelle pour mapper une colonne de table sur trois colonnes d'index de recherche des types Keyword, Text et FuzzyKeyword respectivement. Pour plus d'informations, consultez Colonnes virtuelles.
Comparaison des types
Les trois types de chaînes diffèrent par les fonctionnalités de requête prises en charge et les longueurs maximales de champ.
Une coche (✓) indique que la fonctionnalité est prise en charge. Une croix (×) indique que la fonctionnalité n'est pas prise en charge.
|
Fonctionnalité |
Keyword |
FuzzyKeyword |
Text |
|
✓ |
× |
× |
|
|
✓ |
× |
× |
|
|
✓ |
× |
× |
|
|
✓ |
✓ |
✓ |
|
|
✓ |
× |
× |
|
|
✓ |
× |
× |
|
|
× |
× |
✓ |
|
|
Recherche en texte intégral : Score de pertinence |
× |
× |
✓ |
|
Recherche en texte intégral : Mise en surbrillance et résumé |
× |
× |
✓ |
|
× |
× |
✓ |
|
|
× |
× |
✓ |
|
|
✓ (Performances inférieures sur les grands jeux de données) |
✓ (Hautes performances) |
× |
|
|
✓ (Performances inférieures sur les grands jeux de données) |
✓ (Hautes performances) |
× |
|
|
Requête suffix |
× |
✓ |
× |
|
Longueur maximale |
4 Ko |
2 Ko |
2 Mo |