ワイルドカードクエリを実行する場合、クエリでアスタリスク (*) および疑問符 (?) ワイルドカード文字を使用してデータを検索できます。アスタリスク (*) は、検索語の任意の長さの文字列と、前または後に一致します。疑問符 (?) は、特定の位置にある単一の文字と一致します。一致させる文字列は、アスタリスク (*) または疑問符 (?) で始めることができます。たとえば、"table*e" 文字列を検索すると、"tablestore" が一致します。
NOT LIKE 演算子を使用する場合は、WildcardQuery を BoolQuery の mustNotQueries と共に使用する必要があります。
前提条件
OTSClient インスタンスが初期化されています。詳細については、OTSClient インスタンスを初期化するを参照してください。
データテーブルが作成され、データがデータテーブルに書き込まれています。詳細については、データテーブルを作成するおよびデータを書き込むを参照してください。
データテーブルの検索インデックスが作成されています。詳細については、検索インデックスを作成するを参照してください。
パラメーター
パラメーター | 説明 |
Query | クエリのタイプ。このパラメーターを WildcardQuery に設定します。 |
FieldName | クエリする列の名前。 |
Value | ワイルドカード文字を含む文字列。文字列は32文字を超えることはできません。 |
TableName | データテーブルの名前。 |
IndexName | 検索インデックスの名前。 |
GetTotalCount | クエリ条件を満たす行の総数を返すかどうかを指定します。デフォルト値: false。 このパラメーターを true に設定すると、クエリのパフォーマンスが低下します。 |
ColumnsToGet | クエリ条件を満たす行のすべての列を返すかどうかを指定します。ReturnAll、Columns、および ReturnAllFromIndex パラメーターを指定できます。 ReturnAll のデフォルト値は false で、すべての列が返されないことを指定します。次のいずれかの方法を使用して、返す列を指定できます。次の方法を使用して返す列を指定しない場合は、主キー列のみが返されます。
ReturnAll を true に設定すると、すべての列が返されます。 |
例
次のサンプルコードは、テーブル内の Keyword_type_col 列の値が "Search*" と一致する行をクエリする方法を示しています。
/// <summary>
/// テーブル内の Keyword_type_col 列の値が "Search*" と一致する行をクエリします。
/// </summary>
/// <param name="otsClient"></param>
public static void WildcardQuery(OTSClient otsClient)
{
var searchQuery = new SearchQuery();
// クエリタイプを WildcardQuery に設定し、1 つ以上のワイルドカード文字を含む文字列を指定してワイルドカードクエリを実行します。
searchQuery.Query = new WildcardQuery(Keyword_type_col, "*Search*");
// クエリ条件を満たす行の総数を返します。
searchQuery.GetTotalCount = true;
var request = new SearchRequest(TableName, IndexName, searchQuery);
// ColumnsToGet パラメーターを指定して、指定した列、クエリ条件を満たす行のすべての列、または検索インデックスのすべての列を返すことができます。このパラメーターを指定しない場合は、主キー列のみが返されます。
request.ColumnsToGet = new ColumnsToGet()
{
// 検索インデックスのすべての列を返します。
ReturnAllFromIndex = true
// 指定した列を返します。
//Columns = new List<string>() { Long_type_col, Text_type_col, Keyword_type_col }
// クエリ条件を満たす行のすべての列を返します。
//ReturnAll = true
};
var response = otsClient.Search(request);
Console.WriteLine("Total Count:" + response.TotalCount); // 返された行数ではなく、クエリ条件を満たす行の総数を表示します。
}
FAQ
参照
検索インデックスを使用してデータをクエリする場合、次のクエリメソッドを使用できます:タームクエリ、複数タームクエリ、すべて一致クエリ、一致クエリ、一致フレーズクエリ、プレフィックスクエリ、範囲クエリ、ワイルドカードクエリ、ブールクエリ、ジオクエリ、ネストされたクエリ、および存在クエリ。ビジネス要件に基づいて、さまざまなクエリメソッドを使用して複数のディメンションからデータをクエリできます。
並べ替えおよびページング機能を使用して、クエリ条件を満たす行を並べ替えたりページネーションしたりできます。詳細については、並べ替えとページングを参照してください。
折りたたみ (個別) 機能を使用して、特定の列に基づいて結果セットを折りたたむことができます。このようにして、指定されたタイプのデータはクエリ結果に一度だけ表示されます。詳細については、折りたたみ (個別)を参照してください。
データテーブルのデータを分析する場合は、Search オペレーションの集計機能を使用するか、SQL ステートメントを実行できます。たとえば、最小値と最大値、合計、および行の総数を取得できます。詳細については、集計およびSQL クエリを参照してください。
行を並べ替えることなく、クエリ条件を満たすすべての行を取得する場合は、ParallelScan および ComputeSplits オペレーションを呼び出して並列スキャン機能を使用できます。詳細については、並列スキャンを参照してください。