collapse 機能を使用すると、特定のカラムに基づいて検索結果の重複を排除できます。クエリ結果に特定のタイプのデータが大量に含まれる場合、collapse 機能により返された結果内にそのデータが 1 回のみ表示され、結果タイプの多様性が確保されます。
前提条件
-
OTSClient インスタンスが初期化されている必要があります。詳細については、「OTSClient インスタンスの初期化」をご参照ください。
-
データテーブルが作成されます。データがテーブルに書き込まれます。詳細については、「データテーブルを作成する」および「データを書き込む」をご参照ください。
-
データテーブルに対して検索インデックスが作成されています。詳細については、「検索インデックスを作成する」をご参照ください。
注意事項
-
collapse 機能は、offset および limit を使用したページングのみをサポートします。トークンベースのページングには対応していません。
-
集約と collapse を結果セットに同時に適用する場合、集約は collapse 処理前の結果セットに対して実行されます。
-
collapse 機能を使用した後、返されるグループの総数は offset および limit パラメーターによって制限されます。この機能では最大 100,000 グループまで返すことができます。
-
結果に返される総行数は、collapse 操作前の一致行数です。collapse 後のグループ総数を取得することはできません。
パラメーター
|
パラメーター |
説明 |
|
table_name |
データテーブルの名前です。 |
|
index_name |
検索インデックスの名前。 |
|
query |
クエリタイプです。サポートされている任意のクエリタイプを設定します。 |
|
collapse |
指定されたカラムに基づいて結果セットを折りたたみます。INTEGER、FLOATING-POINT、KEYWORD カラムのみがサポートされています。
|
|
offset |
クエリの開始位置です。 |
|
limit |
返される最大行数です。 |
使用例
次のサンプルコードは、多次元インデックスを使用してテーブル php_sdk_test 内のキーワードレコードを最大 10 件取得し、カラム col1 および col2 のデータを返す方法を示しています。
$request = array(
'table_name' => 'php_sdk_test',
'index_name' => 'php_sdk_test_search_index',
'search_query' => array(
'offset' => 0,
'limit' => 10,
'get_total_count' => true,
'collapse' => array(
'field_name' => 'keyword'
),
'query' => array(
'query_type' => QueryTypeConst::MATCH_ALL_QUERY
),
// 'sort' => array(// 必要に応じて特定のソート方法を指定します。
// array(
// 'field_sort' => array(
// 'field_name' => 'keyword',
// 'order' => SortOrderConst::SORT_ORDER_ASC
// )
// ),
// ),
'token' => null,
),
'columns_to_get' => array(
'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
'return_names' => array('col1', 'col2')
)
);
$response = $otsClient->search($request);
よくある質問
参照
多次元インデックスを使用してデータをクエリする際は、以下のクエリ方法を使用できます:完全一致検索、複数値完全一致検索、完全一致検索、一致検索、フレーズ一致検索、プレフィックス検索、範囲クエリ、ワイルドカード検索、ブール値クエリ、ジオクエリ、ネストされたクエリ、および exists クエリ。ビジネス要件に基づき、さまざまなクエリ方法を組み合わせて多角的にデータをクエリできます。
クエリ条件を満たす行をソートまたはページングする必要がある場合は、ソートおよびページング機能を使用できます。詳細については、「ソートおよびページング」をご参照ください。
特定のカラムに基づいて結果セットを折りたたむ必要がある場合は、collapse (distinct) 機能を使用できます。これにより、指定されたタイプのデータがクエリ結果内に 1 回のみ表示されます。詳細については、「Collapse (distinct)」をご参照ください。
データテーブル内のデータを分析し、最大値・最小値・合計値・総行数などを取得したい場合は、集約操作を実行するか、SQL ステートメントを実行できます。詳細については、「集約」および「SQL クエリ」をご参照ください。
行をソートする必要がなく、クエリ条件を満たすすべての行を迅速に取得したい場合は、ParallelScan 操作および ComputeSplits 操作を呼び出して並列スキャン機能を使用できます。詳細については、「並列スキャン」をご参照ください。