Une requête de correspondance permet d'interroger les données d'une table en fonction de correspondances approximatives. Tablestore tokenize les valeurs des colonnes de type TEXT et les mots-clés de recherche selon l'analyseur spécifié, puis effectue la requête sur la base des jetons générés. Nous vous recommandons d'utiliser l'opération MatchPhraseQuery pour les colonnes utilisant une tokenisation floue, afin de garantir des performances élevées lors des recherches floues.
Prérequis
Initialisez une instance OTSClient. Pour plus d'informations, consultez la rubrique Initialiser une instance OTSClient.
Créez une table de données et écrivez-y des données. Pour plus d'informations, consultez les rubriques Créer des tables de données et Écrire des données.
Créez un index de recherche pour la table de données. Pour plus d'informations, consultez la rubrique Créer des index de recherche.
Paramètres
|
Paramètre |
Description |
|
FieldName |
Nom de la colonne à interroger. La colonne doit être de type TEXT. |
|
Text |
Mot-clé utilisé pour la mise en correspondance lors de la requête. Si la colonne interrogée est de type TEXT, le mot-clé est divisé en plusieurs jetons selon le type d'analyseur spécifié lors de la création de l'index de recherche. Par défaut, une tokenisation par mot unique est appliquée si aucun type d'analyseur n'est spécifié. Par exemple, si la colonne est de type TEXT avec une tokenisation par mot unique, une requête avec l'expression « this is » renverra des résultats tels que « ..., this is tablestore », « is this tablestore », « tablestore is cool », « this » et « is ». |
|
Query |
Type de requête. Définissez ce paramètre sur MatchQuery. |
|
Operator |
Opérateur logique. La valeur par défaut est OR, ce qui signifie qu'une ligne satisfait aux conditions si la valeur de la colonne contient au moins le nombre minimum de jetons requis. Si vous définissez l'opérateur sur AND, la ligne ne satisfait aux conditions que si la valeur de la colonne contient tous les jetons. |
|
MinimumShouldMatch |
Nombre minimum de jetons correspondants contenus dans la valeur de la colonne. Une ligne est renvoyée uniquement si la valeur de la colonne interrogée contient au moins ce nombre minimum de jetons correspondants. Remarque
Le paramètre MinimumShouldMatch doit être utilisé conjointement avec l'opérateur logique OR. |
|
TableName |
Nom de la table de données. |
|
IndexName |
Nom de l'index de recherche. |
|
GetTotalCount |
Indique s'il faut renvoyer le nombre total de lignes satisfaisant aux conditions de la requête. La valeur par défaut est false (le nombre total n'est pas renvoyé). Définir ce paramètre sur true réduit les performances de la requête. |
|
ColumnsToGet |
Indique s'il faut renvoyer toutes les colonnes des lignes satisfaisant aux conditions de la requête. Vous pouvez spécifier les paramètres ReturnAll, Columns et ReturnAllFromIndex. Par défaut,
Définissez |
Exemple
L'exemple de code suivant montre comment interroger les lignes dont la valeur de la colonne Text_type_col correspond à « SearchIndex » dans la table de données.
/// <summary>
/// Query the rows in which the value of the Text_type_col column matches "SearchIndex" in a table and return the total number of rows that meet the query conditions.
/// </summary>
/// <param name="otsClient"></param>
public static void MatchQuery(OTSClient otsClient)
{
var searchQuery = new SearchQuery();
// Set the query type to MatchQuery, the column that you want to match to Text_type_col, and the keyword to "SearchIndex".
searchQuery.Query = new MatchQuery("Text_type_col", "SearchIndex");
// Return the total number of rows that meet the query conditions.
searchQuery.GetTotalCount = true;
var request = new SearchRequest(TableName, IndexName, searchQuery);
// You can configure the ColumnsToGet parameter to specify the columns that you want to return, specify that all columns are returned, or specify that all columns in the search index are returned. If you do not configure this parameter, only the primary key columns are returned.
request.ColumnsToGet = new ColumnsToGet()
{
// Return all columns in the search index.
ReturnAllFromIndex = true
// Return the columns that you specify.
//Columns = new List<string>() { Long_type_col, Text_type_col, Keyword_type_col }
// Return all columns in the rows that meet the query conditions.
//ReturnAll = true
};
var response = otsClient.Search(request);
Console.WriteLine("Total Count:" + response.TotalCount); // Display the total number of rows that meet the query conditions instead of the number of returned rows.
}
FAQ
Références
-
Lorsque vous utilisez un index de recherche pour interroger des données, vous pouvez recourir aux méthodes de requête suivantes : requête term, requête terms, requête match all, requête de correspondance, requête de correspondance de phrase, requête prefix, requête range, requête wildcard, requête booléenne, requête geo, requête nested et requête exists. Vous pouvez utiliser différentes méthodes de requête pour interroger les données selon plusieurs dimensions, en fonction de vos besoins métier.
Vous pouvez trier ou paginer les lignes satisfaisant aux conditions de la requête en utilisant les fonctionnalités de tri et de pagination. Pour plus d'informations, consultez la rubrique Tri et pagination.
Vous pouvez utiliser la fonctionnalité de regroupement (distinct) pour regrouper l'ensemble des résultats en fonction d'une colonne spécifique. Ainsi, les données du type spécifié n'apparaissent qu'une seule fois dans les résultats de la requête. Pour plus d'informations, consultez la rubrique Regroupement (distinct).
Si vous souhaitez analyser les données d'une table de données, vous pouvez utiliser la fonctionnalité d'agrégation de l'opération Search ou exécuter des instructions SQL. Par exemple, vous pouvez obtenir les valeurs minimales et maximales, la somme ainsi que le nombre total de lignes. Pour plus d'informations, consultez les rubriques Agrégation et Requête SQL.
Si vous souhaitez obtenir toutes les lignes satisfaisant aux conditions de la requête sans avoir besoin de les trier, vous pouvez appeler les opérations ParallelScan et ComputeSplits pour utiliser la fonctionnalité de balayage parallèle. Pour plus d'informations, consultez la rubrique Balayage parallèle.