Lors d'une requête avec caractères génériques, utilisez les caractères astérisque () et point d'interrogation (?) pour rechercher des données. L'astérisque () correspond à une chaîne de n'importe quelle longueur située avant, après ou au sein d'un terme de recherche. Le point d'interrogation (?) correspond à un seul caractère à une position spécifique. La chaîne à faire correspondre peut commencer par un astérisque () ou un point d'interrogation (?). Par exemple, la recherche de la chaîne « tablee » permet de trouver « tablestore ».
Si le modèle de requête est *word* (équivalent à WHERE field_a LIKE '%word%' en SQL), privilégiez la fonctionnalité de requêtes avec caractères génériques basées sur les jetons pour optimiser les performances. Les performances restent stables même lorsque la taille des données augmente.
Pour utiliser l'opérateur NOT LIKE, combinez WildcardQuery avec mustNotQueries de BoolQuery.
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 |
|
Query |
Type de requête. Définissez ce paramètre sur WildcardQuery. |
|
FieldName |
Nom de la colonne à interroger. |
|
Value |
Chaîne contenant les caractères génériques. Sa longueur ne doit pas dépasser 32 caractères. |
|
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 correspondant aux conditions de requête. Valeur par défaut : false. La définition de ce paramètre sur true réduit les performances de la requête. |
|
ColumnsToGet |
Indique s'il faut renvoyer toutes les colonnes des lignes correspondant aux conditions de requête. Spécifiez les paramètres ReturnAll, Columns et ReturnAllFromIndex. La valeur par défaut de ReturnAll est false, ce qui signifie que toutes les colonnes ne sont pas renvoyées. Utilisez l'une des méthodes suivantes pour spécifier les colonnes à renvoyer. À défaut, seules les colonnes de clé primaire sont renvoyées.
Si vous définissez ReturnAll sur true, toutes les colonnes sont renvoyées. |
Exemple
L'exemple de code suivant montre comment interroger les lignes dont la valeur de la colonne Keyword_type_col correspond à « Search* » dans une table.
/// <summary>
/// Query the rows in which the value of the Keyword_type_col column matches "Search*" in a table.
/// </summary>
/// <param name="otsClient"></param>
public static void WildcardQuery(OTSClient otsClient)
{
var searchQuery = new SearchQuery();
// Set the query type to WildcardQuery and specify a string that contains one or more wildcard characters to perform a wildcard query.
searchQuery.Query = new WildcardQuery(Keyword_type_col, "*Search*");
// Return the total number of rows that meet the query conditions.
searchQuery.GetTotalCount = true;
var request = new SearchRequest(TableName, IndexName, searchQuery);
// You can specify the ColumnsToGet parameter to return the columns that you specify, all columns in the rows that meet the query conditions, or all columns in the search index. If you do not specify 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 match, requête match 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 des données selon plusieurs dimensions en fonction de vos besoins métier.
Triez ou paginez les lignes correspondant aux conditions de requête à l'aide des fonctionnalités de tri et de pagination. Pour plus d'informations, consultez la rubrique Tri et pagination.
Utilisez la fonctionnalité de collapse (distinct) pour regrouper l'ensemble de 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 Collapse (distinct).
Pour analyser les données d'une table de données, utilisez la fonctionnalité d'agrégation de l'opération Search ou exécutez 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.
Pour obtenir toutes les lignes correspondant aux conditions de requête sans avoir besoin de les trier, appelez les opérations ParallelScan et ComputeSplits afin d'utiliser la fonctionnalité de balayage parallèle. Pour plus d'informations, consultez la rubrique Balayage parallèle.