Tablestore SDK for Java のサフィックスクエリは、指定した文字列で終わる完全な FuzzyKeyword フィールド値に一致し、一致する行またはその総数を返します。
前提条件
Tablestore SDK for Java をインストールし、クライアントを初期化します。
サフィックスクエリには、Tablestore SDK for Java 5.17.0 以降が必要です。
機能説明
サフィックスクエリは、指定した文字列で終わる完全なフィールド値に一致します。サフィックスクエリは FuzzyKeyword フィールドのみをサポートします。このフィールドタイプの詳細については、「文字列タイプ」をご参照ください。マッチングは大文字と小文字を区別します。たとえば、フィールド値 order-H001 はサフィックス H001 に一致しますが、h001 には一致しません。
FuzzyKeyword フィールドは、ソートまたは集約をサポートしていません。同じクエリでソートまたは集約が必要な場合は、必要な操作をサポートする別のフィールドを使用してください。
Keyword フィールドは SuffixQuery をサポートしていません。同等のサフィックスマッチングを実装するには、クエリに使用する Keyword フィールドに書き込む前に、フィールド値を反転させてください。クエリ時には、マッチングするサフィックス文字列を反転させ、そのフィールドで プレフィックスクエリ (PrefixQuery) を実行します。
search を呼び出す際、クエリタイプを SuffixQuery に設定します。SearchQuery を使用して、結果のリミット、総数の追跡、その他の一般的なクエリ設定を構成します。
SearchResponse search(SearchRequest request)
次の例では、phone フィールドの FuzzyKeyword 値のうち、1234 で終わるものをクエリします。クエリは最大 10 行と一致の総数を返します。
String tableName = "example_table";
String indexName = "example_index";
SuffixQuery suffixQuery = new SuffixQuery();
suffixQuery.setFieldName("phone");
suffixQuery.setSuffix("1234");
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(suffixQuery);
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 |
取得する行の最大数。行を返さない場合は、このパラメーターを |
|
collapse (オプション) |
Collapse |
指定したフィールドで結果の重複を排除するために使用されるコラプス設定。詳細については、「コラプス (distinct)」をご参照ください。 |
|
sort (オプション) |
Sort |
結果のソート順。 |
|
trackTotalCount (オプション) |
int |
カウントする一致行の最大数。デフォルト値は |
|
filter (オプション) |
SearchFilter |
|
|
aggregationList (オプション) |
|
集約設定。 |
|
groupByList (オプション) |
|
グループ化設定。 |
|
token (オプション) |
byte[] |
ページネーショントークン。前のレスポンスの |
クエリ条件
request.searchQuery.query は、次のパラメーターを含む SuffixQuery オブジェクトです。
|
名前 |
タイプ |
説明 |
|
fieldName (必須) |
String |
クエリ対象の |
|
suffix (必須) |
String |
クエリ文字列。完全なフィールド値は、この文字列で終わる必要があります。マッチングは大文字と小文字を区別します。 |
|
weight (オプション) |
float |
クエリ条件の関連性の重み。値は正の浮動小数点数である必要があります。値が大きいほど、BM25 関連性スコアに対する条件の影響が大きくなります。このパラメーターは、一致する行や返される行数を変更するものではありません。 |
取得する列
request.columnsToGet は、次のパラメーターを含む SearchRequest.ColumnsToGet オブジェクトです。
|
名前 |
タイプ |
説明 |
|
columns (オプション) |
|
取得する属性列。 |
|
returnAll (オプション) |
boolean |
データテーブルからすべての属性列を取得するかどうかを指定します。デフォルト値は |
|
returnAllFromIndex (オプション) |
boolean |
インデックス付き属性列をすべて取得するかどうかを指定します。デフォルト値は |
戻り値
search は SearchResponse オブジェクトを返します。次の表に、主なフィールドを示します。
|
名前 |
タイプ |
説明 |
|
totalCount |
long |
|
|
rows |
|
|
|
nextToken |
byte[] |
|
|
isAllSuccess |
boolean |
|