Tablestore SDK for Java のプレフィックスクエリは、指定された文字列で始まるフィールド値またはトークンに一致し、一致する行またはその合計数を返します。
前提条件
Tablestore SDK for Java をインストールし、クライアントを初期化します。
機能の説明
プレフィックスクエリは、指定されたフィールド内の、クエリ文字列で始まるフィールド値またはトークンに一致します。Keyword および FuzzyKeyword フィールド (「文字列型」をご参照ください) の場合、フィールド値全体がクエリ文字列で始まる必要があり、大文字と小文字が区別されます。Text フィールドの場合、アナライザーによって生成されたいずれかのトークンがクエリ文字列で始まっていれば、その行は一致すると見なされます。クエリ文字列自体はトークン化されません。
大規模なデータセットの場合は、あいまいクエリに最適化された FuzzyKeyword 型を使用することを推奨します。Keyword フィールドに対するプレフィックスクエリのパフォーマンスは、インデックス付けされたデータが増加するにつれて低下するため、この型は小規模なデータセットにのみ使用してください。Text 型は互換性のためにサポートされています。トークン化により結果が設定に依存するため、完全な文字列の一致には不向きです。
search を呼び出すには、クエリタイプを PrefixQuery に設定し、SearchQuery を使用して、返される行数や合計数の追跡など、その他の一般的なクエリ動作を設定します。
SearchResponse search(SearchRequest request)
次の例では、category フィールドが FuzzyKeyword 型で、hang で始まる行をクエリします。このクエリでは、最大 10 行と、一致する行の合計数が返されます。
String tableName = "example_table";
String indexName = "example_index";
PrefixQuery prefixQuery = new PrefixQuery();
prefixQuery.setFieldName("category");
prefixQuery.setPrefix("hang");
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(prefixQuery);
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 は、以下のパラメーターを含む PrefixQuery オブジェクトです。
|
名前 |
型 |
説明 |
|
fieldName (必須) |
String |
クエリ対象のインデックス付きフィールド名。 |
|
prefix (必須) |
String |
クエリ文字列。 |
|
weight (任意) |
float |
クエリ条件の関連度の重み。値は正の浮動小数点数である必要があります。値が大きいほど、クエリ条件が BM25 関連度スコアに大きく影響します。このパラメーターは、一致や返される行数には影響しません。 |
返される列
request.columnsToGet は、以下のパラメーターを含む SearchRequest.ColumnsToGet オブジェクトです。
|
名前 |
型 |
説明 |
|
columns (任意) |
|
取得する属性列。このパラメーターは、 |
|
returnAll (任意) |
boolean |
テーブル内のすべての属性列を返すかどうかを指定します。デフォルト値: |
|
returnAllFromIndex (任意) |
boolean |
インデックス付けされたすべての属性列を返すかどうかを指定します。デフォルト値: |
戻り値
search は SearchResponse オブジェクトを返します。次の表に、主要なフィールドを示します。
|
名前 |
型 |
説明 |
|
totalCount |
long |
一致した行数。値を取得するには |
|
rows |
|
このクエリによって返された行。値を取得するには |
|
searchHits |
|
クエリのヒット。値を取得するには |
|
nextToken |
byte[] |
次ページのトークン。値を取得するには |
|
isAllSuccess |
boolean |
すべてのインデックスパーティションが正常にクエリされたかどうかを示します。値を取得するには |