Une requête de correspondance d'expression renvoie les lignes uniquement lorsque les jetons d'une colonne correspondent au mot-clé, tant par leur ordre que par leur position. Contrairement à une requête de correspondance simple, la position des jetons est prise en compte. Si la colonne cible utilise une tokenisation floue, une requête de correspondance d'expression s'exécute avec une latence plus faible qu'une requête avec caractères génériques.
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 peut être de type TEXT. |
|
Text |
Mot-clé à faire correspondre avec les valeurs de la colonne. Pour les colonnes TEXT, le mot-clé est tokenisé en fonction du type d'analyseur spécifié lors de la création de l'index de recherche. Si aucun type d'analyseur n'est spécifié, la tokenisation par mot unique est utilisée par défaut. Par exemple, une requête avec l'expression « this is » renvoie des lignes telles que « ..., this is tablestore » et « this is a table », mais pas « this table is ... » ni « is this a table ». |
|
Query |
Type de requête. Définissez-le sur MatchPhraseQuery. |
|
TableName |
Nom de la table de données. |
|
IndexName |
Nom de l'index de recherche. |
|
GetTotalCount |
Indique si le nombre total de lignes correspondantes doit être renvoyé. Valeur par défaut : false. La définition de ce paramètre sur true réduit les performances de la requête. |
|
ColumnsToGet |
Colonnes à renvoyer depuis les lignes correspondantes. Configurez cette option à l'aide de ReturnAll, Columns ou ReturnAllFromIndex. Par défaut,
Définissez |
Exemple
L'exemple suivant interroge les lignes dont la colonne Text_type_col correspond à l'expression « Tablestore SearchIndex ».
/// <summary>
/// Query rows where Text_type_col matches "Tablestore SearchIndex" and return the total match count.
/// </summary>
/// <param name="otsClient"></param>
public static void MatchPhraseQuery(OTSClient otsClient)
{
var searchQuery = new SearchQuery();
// Set the query type to MatchPhraseQuery.
searchQuery.Query = new MatchPhraseQuery("Text_type_col", "Tablestore SearchIndex");
// Return the total number of matching rows.
searchQuery.GetTotalCount = true;
var request = new SearchRequest(TableName, IndexName, searchQuery);
// Specify the columns to return. If not set, only primary key columns are returned.
request.ColumnsToGet = new ColumnsToGet()
{
// Return all columns in the search index.
ReturnAllFromIndex = true
// Return specific columns.
//Columns = new List<string>() { Long_type_col, Text_type_col, Keyword_type_col }
// Return all columns in the matching rows.
//ReturnAll = true
};
var response = otsClient.Search(request);
// TotalCount is the number of matching rows, not the number of returned rows.
Console.WriteLine("Total Count:" + response.TotalCount);
}
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 match, requête de correspondance d'expression, requête prefix, requête range, requête wildcard, requête Boolean, requête geo, requête nested et requête exists. Vous pouvez utiliser différentes méthodes de requête pour interroger des données selon plusieurs dimensions, en fonction de vos besoins métier.
Vous pouvez trier ou paginer les lignes répondant aux conditions de la requête à l'aide des 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 et 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 répondant 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é d'analyse parallèle. Pour plus d'informations, consultez la rubrique Analyse parallèle.