Tablestore SDK for Java を使用した複数値完全一致検索は、フィールド値またはトークンが、指定された複数のクエリ用語のいずれかと完全に一致する場合に、その行または合計数を返します。
前提条件
Tablestore SDK for Java をインストールし、クライアントを初期化します。
機能説明
複数値完全一致検索は、指定されたフィールドを複数のクエリ term と照合し、いずれかの term が完全一致条件を満たす場合に行を返します。 Keyword や Long フィールドなどの非テキストフィールドの場合、フィールド値全体がクエリ term のいずれかと完全に一致する必要があります。 この OR の組み合わせは、SQL の IN 条件に似ています。 Text フィールド (文字列型をご参照ください) では、アナライザによって生成されたトークンのいずれかがクエリ term のいずれかと完全に一致する場合に、行が一致します。 クエリ term 自体はトークン化されません。
Text フィールドに対して生成されるトークンは、アナライザの構成、アルゴリズムの更新、および言語の使用状況によって変更される場合があります。Text フィールドの元の文字列全体に一致させるために、複数値完全一致検索を使用しないでください。代わりに、仮想カラムを使用してソースフィールドを Keyword 型にマップし、仮想カラムをクエリしてください。
search を呼び出すには、クエリタイプを TermsQuery に設定し、SearchQuery を使用して、返される行数、合計数の追跡、およびその他の一般的なクエリの動作を設定します。
SearchResponse search(SearchRequest request)
次の例では、category フィールドの値が books または games と完全に一致する行をクエリし、最大 10 行と、一致する行の総数を返します。
String tableName = "example_table";
String indexName = "example_index";
TermsQuery termsQuery = new TermsQuery();
termsQuery.setFieldName("category");
termsQuery.addTerm(ColumnValue.fromString("books"));
termsQuery.addTerm(ColumnValue.fromString("games"));
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(termsQuery);
searchQuery.setLimit(10);
searchQuery.setTrackTotalCount(SearchQuery.TRACK_TOTAL_COUNT);
SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);
SearchResponse response = client.search(request);
System.out.println(response.getTotalCount());
System.out.println(response.getRows());
パラメーター
検索リクエスト
request は、次のパラメーターを含む SearchRequest オブジェクトです。
|
名前 |
型 |
説明 |
|
tableName (必須) |
String |
テーブルの名前。 |
|
indexName (必須) |
String |
検索インデックスの名前。 |
|
searchQuery (必須) |
SearchQuery |
クエリ条件と共通のクエリ設定。 |
|
columnsToGet (任意) |
SearchRequest.ColumnsToGet |
返される列の設定。このパラメーターを省略した場合、プライマリキー列のみが返されます。 |
|
timeoutInMillisecond (任意) |
int |
リクエストレベルのクエリタイムアウト (ミリ秒単位) です。デフォルト値は |
|
routingValues (任意) |
|
カスタムルートフィールドのプライマリキー値。インデックスがカスタムルーティングを使用しない場合は、このパラメーターを省略します。 |
クエリ設定
request.searchQuery は、以下のパラメーターを含む SearchQuery オブジェクトです。
|
名前 |
型 |
説明 |
|
query (必須) |
Query |
クエリ条件。複数値完全一致検索の場合は、このパラメーターを |
|
offset (任意) |
Integer |
クエリの開始位置。 |
|
limit (任意) |
Integer |
返される行の最大数です。このパラメーターを |
|
highlight (任意) |
Highlight |
Text フィールドのまとめとハイライトの設定。構成の詳細については、「まとめとハイライト」をご参照ください。 |
|
collapse (任意) |
Collapse |
指定されたフィールドで結果を重複排除する、フィールドの折りたたみ設定。構成の詳細については、「クエリ結果の折りたたみ」をご参照ください。 |
|
sort (任意) |
Sort |
結果のソート順。構成の詳細については、「結果のソートとページ分割」をご参照ください。 |
|
trackTotalCount (任意) |
int |
カウントする一致する行の最大数です。デフォルト値は |
|
filter (任意) |
SearchFilter |
|
|
aggregationList (任意) |
|
集約設定。構成の詳細については、「集約」をご参照ください。 |
|
groupByList (任意) |
|
グループ化設定。構成の詳細については、「集約」をご参照ください。 |
|
token (任意) |
byte[] |
ページネーショントークンです。行の読み取りを続行するには、このパラメーターに前の応答の |
クエリ条件
request.searchQuery.query は、以下のパラメーターを含む TermsQuery オブジェクトです。
|
名前 |
型 |
説明 |
|
fieldName (必須) |
String |
クエリ対象のインデックスフィールドの名前。 |
|
terms (必須) |
|
クエリ用語。最大 1,024 個の値を指定できます。いずれかの用語が完全一致条件を満たす場合、行は一致と見なされます。Text フィールドの場合、各値は完全な用語として使用され、トークン化されません。 |
|
weight (任意) |
float |
クエリ条件の関連性の重みです。値は正の浮動小数点数である必要があります。値が大きいほど、クエリ条件が BM25 関連性スコアに与える貢献度が大きくなります。このパラメーターは、マッチングや返される行数には影響しません。 |
返される列
request.columnsToGetは SearchRequest.ColumnsToGet オブジェクトであり、次のパラメーターが含まれます。
|
名前 |
型 |
説明 |
|
columns (任意) |
|
返す属性列。 このパラメーターは、 |
|
returnAll (任意) |
boolean |
テーブル内のすべての属性列を返すかどうかを指定します。デフォルト値は |
|
returnAllFromIndex (任意) |
boolean |
すべてのインデックス化された属性列を返すかどうかを指定します。デフォルト値: |
戻り値
search は SearchResponse オブジェクトを返します。次の表では、コアフィールドについて説明します。
|
名前 |
型 |
説明 |
|
totalCount |
long |
一致する行の数です。 |
|
rows |
|
このクエリによって返される行。値を取得するには、 |
|
searchHits |
|
クエリヒットです。 |
|
nextToken |
byte[] |
次のページのトークンです。 |
|
isAllSuccess |
boolean |
すべてのインデックスパーティションが正常にクエリされたかどうかを示します。 |