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

Tablestore:フレーズ一致クエリ

最終更新日:Jul 28, 2026

Tablestore SDK for Java を使用したフレーズ一致クエリは、トークンの順序と位置に基づいて Text フィールドを検索して、フレーズ条件を満たす行を関連性スコアとともに返します。

前提条件

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

機能の説明

フレーズ一致クエリは、Text フィールド内で、指定された順序と位置で連続して出現するトークンを検索します。フィールドタイプに関する詳細については、「文字列型」をご参照ください。フィールド値とクエリテキストは、検索インデックスの作成時に設定されたアナライザーを使用して分析されます。アナライザーが設定されていない場合、デフォルトで単一文字でのトークン化が使用されます。

フレーズ一致クエリでは、すべてのクエリトークンが同じ順序で、隣接する位置に出現する必要があります。たとえば、クエリテキスト this is は this is tablestore には一致しますが、this table is や is this a table には一致しません。match クエリ はトークンが一致するかどうかをチェックするだけで、トークンが隣接していることや、クエリテキストと同じ順序であることを要求しません。

Text フィールドでファジーアナライザーを使用する場合、フレーズ一致クエリは、より低いクエリレイテンシーで、ワイルドカードクエリ と同様のファジーマッチングを提供できます。

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

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

MatchPhraseQuery matchPhraseQuery = new MatchPhraseQuery();
matchPhraseQuery.setFieldName("description");
matchPhraseQuery.setText("tablestore durable");

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchPhraseQuery);
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

クエリ条件。フレーズ一致クエリの場合は、このパラメーターを MatchPhraseQuery に設定してください。

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 は、以下のパラメーターを含む MatchPhraseQuery オブジェクトです。

名前

型

説明

fieldName (必須)

String

クエリ対象の Text インデックスフィールドの名前。

text (必須)

String

クエリテキスト。テキストはフィールドアナライザーを使用して分析され、トークンの順序と位置に基づいて照合されます。

weight (任意)

float

クエリの重み。デフォルト値は 1.0 で、正の浮動小数点数である必要があります。値を大きくすると、一致するスコープを変更することなく、このクエリの関連性スコアへの寄与度が高まります。

返される列

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

名前

型

説明

columns (任意)

List<String>

返す属性列。returnAll と returnAllFromIndex の両方が 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() を呼び出して値を取得します。