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

Tablestore:まとめとハイライト

最終更新日:Jul 28, 2026

Tablestore SDK for Java のまとめとハイライト機能を使用すると、一致した term を含む Text フィールドからフラグメントを返し、設定されたタグで term をマークできます。

前提条件

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

機能の説明

まとめとハイライト機能は、クエリに一致した term の周辺のテキストフラグメントを抽出し、一致した term を pre-tag と post-tag で囲みます。このフラグメントを使用して、クエリの一致のコンテキストを表示できます。この機能は Text フィールドのみをサポートします。

まとめとハイライト機能を使用する前に、多次元インデックスを作成する際に、フィールドの enableHighlightingtrue に設定する必要があります。クエリでは、SearchQuery.highlight を使用して、フラグメントを返したいフィールドとフラグメントの設定を指定します。フィールドは、まとめとハイライト機能をサポートするクエリ条件で使用される必要があります。そうでない場合、そのフィールドに対してハイライトされたフラグメントは返されません。

次のクエリタイプは、まとめとハイライトの結果を返すことができます:TermQueryTermsQueryMatchQueryMatchPhraseQueryPrefixQueryWildcardQueryRangeQueryBoolQueryConstScoreQueryNestedQuery

BoolQuery または ConstScoreQuery の場合、前述の 7 つのクエリタイプの子クエリで使用されるフィールドに対して、まとめとハイライトを設定できます。NestedQuery の場合、InnerHits.highlight を設定して、一致した子行のまとめとハイライトの結果を返します。詳細については、「ネスト化クエリ」をご参照ください。

説明
  • MatchQuery または MatchPhraseQuery を使用する場合、一致した term が複数の pre-tag と post-tag のペアで囲まれることがあります。

  • Text フィールドに最大セマンティック形態素解析が使用されている場合、MatchPhraseQuery はまとめとハイライトをサポートしません。

  • フラグメントの境界が一致した term を分割することがあります。この場合、その term はハイライトされません。

次の例では、一致検索を使用して、description フィールドに tablestore という term が含まれる行を取得します。この例では、返されたフラグメント内で一致した term を <b></b> で囲みます。description フィールドは、まとめとハイライトが有効になっている Text フィールドです。

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

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

HighlightParameter highlightParameter = new HighlightParameter();
highlightParameter.setPreTag("");
highlightParameter.setPostTag("");

Highlight highlight = new Highlight();
highlight.addFieldHighlightParam("description", highlightParameter);

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchQuery);
searchQuery.setHighlight(highlight);
searchQuery.setLimit(10);

SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchResponse response = client.search(request);
for (SearchHit hit : response.getSearchHits()) {
    HighlightResultItem resultItem = hit.getHighlightResultItem();
    if (resultItem == null) {
        continue;
    }
    HighlightField field = resultItem.getHighlightFieldByName("description");
    if (field != null) {
        System.out.println(field.getFragments());
    }
}

パラメーター

request.searchQuery.highlightHighlight 型です。fieldHighlightParams の値は、個々のフィールドのフラグメントの動作を設定する HighlightParameter オブジェクトです。

次の表では、完全なパラメーターパスを使用して、HighlightHighlightParameter の 2 つの設定レベルについて説明します。

名前

タイプ

説明

fieldHighlightParams (必須)

Map<String, HighlightParameter>

フィールド名とフラグメントの設定。キーは、まとめとハイライトの結果を返したいフィールドの名前です。値は、そのフィールドの HighlightParameter オブジェクトです。フィールドは、まとめとハイライトが有効になっており、サポートされているクエリ条件で使用されている必要があります。

highlightEncoder (オプション)

HighlightEncoder

ハイライトされたフラグメント内の元のテキストのエンコーディング方式。有効な値:

  • PLAIN (デフォルト):元のテキストをエンコードしません。

  • HTML:元のテキストを HTML エスケープします。結果を Web ページに表示する場合にこの値を使用します。文字 <>"'/ は、それぞれ &lt;&gt;&quot;&#x27;&#x2F; としてエスケープされます。

fieldHighlightParams[].numberOfFragments (オプション)

Integer

フィールドに対して返すハイライトされたフラグメントの最大数。このパラメーターを 1 に設定することを推奨します。

fieldHighlightParams[].fragmentSize (オプション)

Integer

各フラグメントのターゲットの長さ。デフォルト値は 100 です。実際のフラグメントの長さは、この値と異なる場合があります。

fieldHighlightParams[].preTag (オプション)

String

一致した term の pre-tag。デフォルト値は <em> です。<b> などのカスタムタグを指定できます。preTagpostTag は一緒に設定する必要があります。サポートされている文字は < > " ' /a-zA-Z0-9 です。

fieldHighlightParams[].postTag (オプション)

String

一致した term の post-tag。デフォルト値は </em> です。</b> などのカスタムタグを指定できます。preTagpostTag は一緒に設定する必要があります。サポートされている文字は preTag と同じです。

fieldHighlightParams[].highlightFragmentOrder (オプション)

HighlightFragmentOrder

複数のハイライトされたフラグメントが返される順序。TEXT_SEQUENCE (デフォルト) は、元のテキスト内の位置によってフラグメントをソートします。SCORE は、一致した term の関連性スコアによってフラグメントをソートします。

応答

クエリの応答

search メソッドは SearchResponse オブジェクトを返します。次のフィールドは、まとめとハイライトに関連しています。

名前

タイプ

説明

searchHits

List<SearchHit>

クエリヒット。getSearchHits() を呼び出すことで取得できます。各要素には、行データとまとめとハイライトの結果が含まれます。

isAllSuccess

boolean

すべてのインデックスパーティションがクエリされたかどうかを示します。isAllSuccess() を呼び出すことで値を取得できます。値が false の場合、部分的な結果が返されます。

クエリヒット

response.searchHits[]SearchHit 型です。次のフィールドは、まとめとハイライトに関連しています。

名前

タイプ

説明

row

Row

行データ。getRow() を呼び出すことで値を取得できます。

highlightResultItem

HighlightResultItem

行内のすべてのフィールドのまとめとハイライトの結果。getHighlightResultItem() を呼び出すことで値を取得できます。行にハイライト結果がない場合、値は null です。

ハイライト結果

response.searchHits[].highlightResultItemHighlightResultItem 型で、次のフィールドを含みます。

名前

タイプ

説明

highlightFields

Map<String, HighlightField>

行内のフィールドのハイライト結果。getHighlightFields() を呼び出すことでマップを取得できます。また、getHighlightFieldByName(fieldName) を呼び出して特定のフィールドの結果を取得することもできます。フィールドにハイライト結果がない場合、このメソッドは null を返します。

フィールドフラグメント

response.searchHits[].highlightResultItem.highlightFields[fieldName]HighlightField 型で、次のフィールドを含みます。

名前

タイプ

説明

fragments

List<String>

フィールドのハイライトされたフラグメント。getFragments() を呼び出すことでリストを取得できます。フラグメント内の一致した term は、設定された pre-tag と post-tag で囲まれます。