Tablestore SDK for Java の Term クエリは、フィールド値またはトークンがクエリタームと完全に一致する行を検索し、その行または総数を返します。
前提条件
Tablestore SDK for Java をインストールし、クライアントを初期化します。
機能説明
タームクエリは、指定されたフィールドにおいて、クエリタームと完全に一致するコンテンツにマッチします。Keyword フィールドや Long フィールドなどのテキスト以外のフィールドの場合、フィールド値全体がクエリタームと完全に一致する必要があります。Text フィールド (文字列型を参照) の場合、アナライザーによって生成されたいずれかのトークンがクエリタームと完全に一致すれば、その行はマッチします。クエリターム自体はトークン化されません。
Text フィールドに対して生成されるトークンは、アナライザーの設定、アルゴリズムの更新、および言語の使用状況によって変化する可能性があります。Text フィールドの元の文字列全体を照合するために term クエリを使用することは避けてください。代わりに、仮想列を使用してソースフィールドを Keyword 型にマッピングし、その仮想列にクエリを実行してください。
search を呼び出すには、クエリタイプを TermQuery に設定し、SearchQuery を使用して、返される行数、合計数のトラッキング、およびその他の一般的なクエリ動作を設定します。
SearchResponse search(SearchRequest request)
次の例では、category フィールドの値が books と完全に一致する行を照会し、最大 10 行と一致する行の総数を返します。
String tableName = "example_table";
String indexName = "example_index";
TermQuery termQuery = new TermQuery();
termQuery.setFieldName("category");
termQuery.setTerm(ColumnValue.fromString("books"));
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(termQuery);
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 オブジェクトです。
|
名前 |
型 |
説明 |
|
|
String |
テーブルの名前。 |
|
|
String |
検索インデックスの名前。 |
|
|
SearchQuery |
クエリ条件と一般的なクエリ設定。 |
|
|
SearchRequest.ColumnsToGet |
返される列の設定。 このパラメーターを省略した場合、プライマリキー列のみが返されます。 |
|
|
int |
リクエストレベルのクエリタイムアウト (ミリ秒単位)。デフォルト値は |
|
|
|
カスタムルーティングフィールドのプライマリキー値。 インデックスがカスタムルーティングを使用しない場合は、このパラメーターを省略します。 |
クエリ設定
request.searchQuery は、以下のパラメーターを含む SearchQuery オブジェクトです。
|
名前 |
型 |
説明 |
|
|
Query |
クエリ条件。 タームクエリの場合は |
|
|
Integer |
クエリの開始位置。 |
|
|
Integer |
返される行の最大数。このパラメーターを |
|
|
Highlight |
Textフィールドの概要とハイライト表示の設定。 設定の詳細については、「概要とハイライト表示」をご参照ください。 |
|
|
Collapse |
指定されたフィールドで結果を折りたたむことで重複を排除する設定。 設定の詳細については、「クエリ結果の折りたたみ」をご参照ください。 |
|
|
Sort |
結果のソート順。 設定の詳細については、「結果のソートとページ分割」をご参照ください。 |
|
|
int |
カウントする一致行の予想される最大数です。デフォルト値は、カウントを無効にする |
|
|
SearchFilter |
|
|
|
|
アグリゲーションの設定。 設定の詳細については、「アグリゲーション」をご参照ください。 |
|
|
|
グループ化の設定。 設定の詳細については、「アグリゲーション」をご参照ください。 |
|
|
byte[] |
ページネーション トークンです。後続の行を読み取るには、このパラメーターに前のレスポンスで返された |
クエリ条件
request.searchQuery.query は、以下のパラメーターを含む TermQuery オブジェクトです。
|
名前 |
型 |
説明 |
|
|
String |
クエリ対象のインデックス付きフィールドの名前。 |
|
|
ColumnValue |
クエリターム。 |
|
|
float |
クエリ条件の関連性の重み。値は正の浮動小数点数である必要があります。値が大きいほど、クエリ条件の BM25 関連度スコアへの寄与が大きくなります。このパラメーターは、マッチングや返される行数には影響しません。 |
返される列
request.columnsToGet は、次のパラメーターを含む SearchRequest.ColumnsToGet オブジェクトです。
|
名前 |
型 |
説明 |
|
|
|
返す属性列です。 |
|
|
boolean |
テーブル内のすべての属性列を返すかどうかを指定します。デフォルト値: |
|
|
boolean |
すべてのインデックス付き属性列を返すかどうかを指定します。デフォルト値: |
戻り値
search は SearchResponse オブジェクトを返します。次の表で、コアフィールドについて説明します。
|
名前 |
型 |
説明 |
|
totalCount |
long |
一致する行の数です。 |
|
rows |
|
このクエリによって返された行。値を取得するには |
|
searchHits |
|
クエリがヒットした場合、 |
|
nextToken |
byte[] |
次ページトークン。 |
|
isAllSuccess |
boolean |
すべてのインデックスパーティションが正常にクエリされたかどうかを示します。 |