すべてのプロダクト
Search
ドキュメントセンター

Tablestore:match クエリ

最終更新日:Jul 28, 2026

Tablestore SDK for Java の match クエリは、Text または Keyword フィールドを検索し、一致条件を満たす行を関連度スコアとともに返します。

前提条件

Tablestore SDK for Java をインストールし、クライアントを初期化します。

機能の説明

match クエリは、Text または Keyword フィールドを検索します。 フィールドタイプについての詳細は、「文字列型」をご参照ください。 これら 2 つのフィールドタイプでは、以下のように一致判定の動作が異なります:

  • Text: フィールド値とクエリテキストは、検索インデックスの作成時に設定されたアナライザーを使用して分析されます。アナライザーが設定されていない場合、デフォルトで単一ワードのトークン化が使用されます。デフォルトの OR 演算子は、いずれかのクエリトークンを含むフィールド値に一致しますが、AND 演算子を使用すると、すべてのクエリトークンを必須にしたり、一致する必要があるトークンの最小数を指定したりできます。

  • Keyword :フィールド値とクエリテキストはどちらも分析されません。 フィールド値全体がクエリテキストと等しい場合にのみ、行が一致します。

マッチクエリでは、一致するトークンが隣接している必要も、クエリテキストと同じ順序である必要もありません。トークンを順序通りに一致させるには、マッチフレーズクエリを使用します。Text フィールドでファジーアナライザーを使用していて、高性能なファジー検索が必要な場合も、マッチフレーズクエリの使用が推奨されます。

以下の例では、description フィールドに tablestore または durable トークンが含まれる行をクエリし、最大 10 行、一致する行の総数、および関連性スコアを返します。

String tableName = "example_table";
String indexName = "example_index";

MatchQuery matchQuery = new MatchQuery();
matchQuery.setFieldName("description");
matchQuery.setText("tablestore durable");

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchQuery);
searchQuery.setSort(new Sort(Collections.singletonList(new ScoreSort())));
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);
for (SearchHit hit : response.getSearchHits()) {
    System.out.println(hit.getRow());
    System.out.println(hit.getScore());
}

パラメーター

検索リクエスト

request は、次のパラメーターを含む SearchRequest オブジェクトです。

名前

タイプ

説明

tableName (必須)

String

テーブルの名前。

indexName (必須)

String

検索インデックスの名前。

searchQuery (必須)

SearchQuery

クエリ条件と共通のクエリ設定。

columnsToGet (任意)

SearchRequest.ColumnsToGet

返す列の設定。 このパラメーターを省略した場合、プライマリキー列のみが返されます。

timeoutInMillisecond (任意)

int

リクエストレベルのクエリタイムアウト (ミリ秒) です。デフォルト値は -1 で、この場合、個別のクエリタイムアウトは設定されません。

routingValues (任意)

List<PrimaryKey>

カスタムルーティングフィールドのプライマリキー値。 インデックスがカスタムルーティングを使用しない場合は、このパラメーターを省略してください。

クエリ設定

request.searchQuery は、次のパラメーターを含む SearchQuery オブジェクトです。

名前

タイプ

説明

query (必須)

Query

クエリ条件。一致クエリには MatchQuery を設定します。

offset (任意)

Integer

クエリの開始位置。

limit (任意)

Integer

返す最大行数。このパラメーターを 0 に設定すると、行は返されません。

highlight (任意)

Highlight

Text フィールドの概要とハイライトの設定です。設定の詳細については、「概要とハイライト」をご参照ください。

collapse (任意)

Collapse

フィールドの折りたたみの設定。指定したフィールドで結果を重複排除します。 設定の詳細については、「クエリ結果の折りたたみ」をご参照ください。

sort (任意)

Sort

結果のソート順。 設定の詳細については、「結果のソートとページネーション」をご参照ください。

trackTotalCount (任意)

int

カウントする一致行の最大数です。デフォルト値は TRACK_TOTAL_COUNT_DISABLED で、カウントが無効になります。すべての一致する行をカウントするには、このパラメーターを TRACK_TOTAL_COUNT に設定します。値が小さいほど、クエリのパフォーマンスが向上します。

filter (任意)

SearchFilter

query の結果に適用されるフィルターです。

aggregationList (任意)

List<Aggregation>

集計設定。 設定の詳細については、「集計」をご参照ください。

groupByList (任意)

List<GroupBy>

グループ化設定。 設定の詳細については、「集計」をご参照ください。

token (任意)

byte[]

ページネーション トークン。行の読み取りを続行するには、このパラメーターに前のレスポンスの nextToken 値を設定します。token を設定すると、トークンに並べ替え条件がすでに含まれているため、SDK によって sort がクリアされます。

一致条件

request.searchQuery.query は、次のパラメーターを含む MatchQuery オブジェクトです。

名前

タイプ

説明

fieldName (必須)

String

クエリ対象の Text 型または Keyword 型のインデックスフィールド名。

text (必須)

String

クエリテキスト。 Text フィールドの場合、クエリテキストはフィールドアナライザーによって分析されます。 Keyword フィールドの場合、クエリテキストは分析されません。

operator (任意)

QueryOperator

クエリトークンを組み合わせるための演算子です。OR (デフォルト) を使用すると、いずれかのトークンが一致する場合に行が一致します。AND を使用すると、すべてのトークンが一致する必要があります。

minShouldMatch (任意)

String または int

operatorOR の場合に一致する必要があるクエリートークンの最小数です。2 などの整数、または "75%" などのパーセンテージ文字列を指定します。

weight (任意)

float

クエリの重み。デフォルト値は1.0で、値は正の浮動小数点数である必要があります。値を大きくすると、マッチング範囲を変更することなく、このクエリの関連度スコアへの貢献度が高まります。

重要

setMinimumShouldMatch(Integer) は非推奨です。setMinShouldMatch(int) または setMinShouldMatch(String) を使用してください。

返す列

request.columnsToGet は、以下のパラメーターを含む SearchRequest.ColumnsToGet オブジェクトです。

名前

タイプ

説明

columns (任意)

List<String>

返す属性列。 このパラメーターは、returnAllreturnAllFromIndex の両方が false の場合にのみ設定します。 このパラメーターを省略した場合、プライマリーキー列のみが返されます。

returnAll (任意)

boolean

テーブル内のすべての属性列を返すかどうかを指定します。デフォルト値は false です。

returnAllFromIndex (任意)

boolean

インデックス化されたすべての属性列を返すかどうかを指定します。デフォルト値は false です。このパラメーターと returnAll の両方を true にすることはできません。

戻り値

クエリのレスポンス

search メソッドは SearchResponse オブジェクトを返します。以下の表では、主なフィールドについて説明します。

名前

タイプ

説明

totalCount

long

一致する行の数。getTotalCount() を呼び出して値を取得します。戻り値は trackTotalCount の設定によって異なります。

rows

List<Row>

現在のレスポンスで返された行。 getRows() を呼び出して取得します。行数は limit を超えません。

searchHits

List<SearchHit>

クエリがヒットします。getSearchHits() を呼び出して値を取得してください。このフィールドには、関連度スコア、概要、およびハイライト結果が含まれます。

nextToken

byte[]

次のページトークン。 getNextToken() を呼び出して値を取得します。値が null でない場合、次のリクエストで token として設定すると、行の読み取りを続行できます。

isAllSuccess

boolean

すべてのインデックスパーティションのクエリが成功したかどうかを示します。isAllSuccess() を呼び出して値を取得します。値が false の場合、レスポンスには部分的な結果が含まれ、totalCount は実際の一致行数より小さい場合があります。

検索ヒット

response.searchHits[]は、以下の主要なフィールドを含む SearchHit オブジェクトです。

名前

タイプ

説明

row

Row

一致する行です。値を取得するには getRow() を呼び出します。

score

Double

関連性スコアです。getScore() を呼び出して値を取得します。ScoreSort が使用される場合、このフィールドには実際のスコアが含まれます。一致するトークンと weight がスコアに影響します。

highlightResultItem

HighlightResultItem

概要とハイライト結果。 getHighlightResultItem() を呼び出して値を取得します。

すべてのクエリトークンとの一致

フィールド値にすべてのクエリートークンが含まれている場合にのみ行が一致するようにするには、operatorAND に設定します。

MatchQuery matchQuery = new MatchQuery();
matchQuery.setFieldName("description");
matchQuery.setText("tablestore durable");
matchQuery.setOperator(QueryOperator.AND);

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchQuery);

一致するトークンの最小数の設定

OR 演算子を使用する場合は、minShouldMatch を設定して、一致が必要なクエリトークンの最小数を指定します。 次の例では、少なくとも 2 つのトークンが一致する必要があります。

MatchQuery matchQuery = new MatchQuery();
matchQuery.setFieldName("description");
matchQuery.setText("tablestore durable cloud");
matchQuery.setOperator(QueryOperator.OR);
matchQuery.setMinShouldMatch(2);

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchQuery);