クエリ結果に特定の種類の大量のデータが含まれている場合、重複排除 (個別化) 機能を使用して、特定の列に基づいて結果セットを重複排除できます。特定の種類のデータは、結果の種類の多様性を確保するために、返された結果に一度だけ表示されます。
前提条件
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化 を参照してください。
データテーブルが作成され、データがデータテーブルに書き込まれていること。詳細については、データテーブルの作成 および データの書き込み を参照してください。
データテーブルの検索インデックスが作成されていること。詳細については、検索インデックスの作成 を参照してください。
使用上の注意
重複排除機能を使用する場合、トークンではなく Offset パラメーターと Limit パラメーターを指定することによってのみページングを実行できます。
結果セットを集計し、同時に重複排除する場合、結果セットは重複排除される前に集計されます。
クエリ結果を重複排除する場合、返される結果の総数は Offset 値と Limit 値の合計によって決まります。最大 100,000 件の結果を返すことができます。
レスポンスの行の総数は、重複排除 (個別化) 機能を使用する前にクエリ条件を満たす行の数を示します。結果セットが重複排除された後、行の総数をクエリすることはできません。
パラメーター
パラメーター | 説明 |
TableName | データテーブルの名前。 |
IndexName | 検索インデックスの名前。 |
Query | クエリのタイプ。このパラメーターは任意のクエリタイプに設定できます。 |
Collapse | 重複排除パラメーター。FieldName パラメーターを含みます。 FieldName: 結果セットの重複排除の基準となる列の名前。値が INTEGER、FLOATING-POINT、KEYWORD データ型の列のみがサポートされています。 |
Offset | 現在のクエリの開始位置。 |
Limit | 現在のクエリで返される最大行数。 特定のデータではなく、クエリ条件を満たす行数のみをクエリするには、Limit パラメーターを 0 に設定します。 |
例
次のサンプルコードは、テーブル内のすべてのデータをクエリし、pk0 列に基づいて結果セットを重複排除する方法の例を示しています。
/// <summary>
/// pk0 列に基づいて結果セットを重複排除します。
/// </summary>
/// <param name="otsClient"></param>
public static void UseCollapse(OTSClient otsClient)
{
MatchAllQuery matchAllQuery = new MatchAllQuery();
Collapse collapse = new Collapse();
collapse.FieldName = "pk0";
SearchQuery searchQuery = new SearchQuery();
searchQuery.Query = matchAllQuery;
searchQuery.Collapse = collapse;
SearchRequest searchRequest = new SearchRequest(TableName, IndexName, searchQuery);
SearchResponse searchResponse = otsClient.Search(searchRequest);
foreach (Row row in searchResponse.Rows)
{
Console.WriteLine(JsonConvert.SerializeObject(row));
}
}
FAQ
参考資料
検索インデックスを使用してデータをクエリする場合、次のクエリメソッドを使用できます。用語クエリ、複数用語クエリ、すべて一致クエリ、一致クエリ、一致フレーズクエリ、プレフィックスクエリ、範囲クエリ、ワイルドカードクエリ、ブールクエリ、地理クエリ、ネストされたクエリ、存在クエリ。ビジネス要件に基づいて、さまざまなクエリメソッドを使用して複数のディメンションからデータをクエリできます。
ソート機能とページング機能を使用して、クエリ条件を満たす行をソートまたはページングできます。詳細については、ソートとページング を参照してください。
重複排除 (個別化) 機能を使用して、特定の列に基づいて結果セットを重複排除できます。このようにして、指定されたタイプのデータはクエリ結果に一度だけ表示されます。詳細については、重複排除 (個別化) を参照してください。
データテーブルのデータを分析する場合、Search 操作の集計機能を使用するか、SQL ステートメントを実行できます。たとえば、最小値、最大値、合計、行の総数などを取得できます。詳細については、集計 および SQL クエリ を参照してください。
行をソートする必要なく、クエリ条件を満たすすべての行を取得する場合、ParallelScan 操作と ComputeSplits 操作を呼び出して並列スキャン機能を使用できます。詳細については、並列スキャン を参照してください。