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

Tablestore:サマリーとハイライト

最終更新日:Sep 10, 2026

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

前提条件

注意事項

  • クエリハイライト機能は、Tablestore Node.js Software Development Kit (SDK) 5.5.0 以降で利用できます。互換性のある SDK バージョンを使用していることを確認してください。Node.js SDK のリリース履歴の詳細については、「Node.js SDK リリース履歴」をご参照ください。

  • Match クエリまたは MatchPhrase クエリでクエリハイライト機能を使用する場合、検索クエリが複数の pre-tag と post-tag によってハイライトされることがあります。

  • Text フィールドが最大セマンティクストークン化を使用している場合、クエリハイライト機能は MatchPhrase クエリではサポートされません。

  • シャーディングによってソーステキスト内でクエリが分割された場合、検索クエリがハイライトされないことがあります。

パラメーター

パラメーター

説明

highlightEncoder

ハイライトされたフラグメントの元のコンテンツのエンコード方式。有効値:

  • PLAIN_MODE (デフォルト):元のコンテンツはエンコードされずに表示されます。

  • HTML_MODE:ハイライトされたフラグメントの元のコンテンツは HTML エスケープされます。たとえば、< は &lt; に、> は &gt; に、" は &quot; に、' は &#x27; に、/ は &#x2F; にエスケープされます。この形式は Web 表示に推奨します。

fieldHighlightParams

フィールドのハイライトパラメーター。このパラメーターは、SearchQuery 内のキーワードクエリに含まれるフィールドに対してのみ設定できます。

HighlightParameter

numberOfFragments

返されるハイライトされたフラグメントの最大数。1 に設定することを推奨します。

fragmentSize

各フラグメントの長さ。デフォルト値: 100。

重要

返されるフラグメントの長さは、この値と正確に一致しない場合があります。

preTag

検索クエリをハイライトするための pre-tag (開始タグ)。たとえば、<em> や <b> などです。デフォルト値は <em> です。必要に応じて pre-tag をカスタマイズできます。preTag でサポートされる文字セットには、< > " ' /、a-z、A-Z、0-9 が含まれます。

postTag

検索クエリをハイライトするための post-tag (終了タグ)。たとえば、</em> や </b> などです。デフォルト値は </em> です。必要に応じて post-tag をカスタマイズできます。postTag でサポートされる文字セットには、< > " ' /、a-z、A-Z、0-9 が含まれます。

highlightFragmentOrder

ハイライトされたフィールドに対して複数のフラグメントが返される場合のフラグメントの並べ替えルール。

  • TEXT_SEQUENCE (デフォルト):フラグメントは、テキスト内での出現順に並べ替えられます。

  • SCORE:フラグメントは、検索クエリのヒットスコア順に並べ替えられます。

例

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

client.search({
    tableName: "<TABLE_NAME>",
    indexName: "<SEARCH_INDEX_NAME>",
    searchQuery: {
        offset: 0,
        limit: 10, // データなしで行数のみを取得するには、limit を 0 に設定します。これにより、行が返されなくなります。
        query: { // クエリタイプを Match クエリに設定します。
            queryType: TableStore.QueryType.MATCH_QUERY,
            query: {
                fieldName: "Col_Text", // 一致させる列を設定します。
                text: "hangzhou shanghai" // 一致させる値を設定します。
            }
        },
        highlight:{
            highlightEncoder:TableStore.HighlightEncoder.PLAIN_MODE,
            highlightParameters:[
                {
                    fieldName:"Col_Text",
                    preTag: "",
                    postTag: "",
                    fragmentsOrder: TableStore.HighlightFragmentOrder.TEXT_SEQUENCE,
                    fragmentSize: 20,
                    numberOfFragments: 3,
                }
                
            ],
        },
        getTotalCount: true // 結果の TotalCount は、テーブル内の総行数を示します。デフォルト値は false で、総数は返されません。
    },
    columnToGet: { // 返す列。有効値:RETURN_SPECIFIED (カスタム列を返す)、RETURN_ALL (すべての列を返す)、RETURN_ALL_FROM_INDEX (検索インデックスからすべての列を返す)、RETURN_NONE (列を返さない)。
        returnType: TableStore.ColumnReturnType.RETURN_ALL
    }
}, function (err, data) {
    if (err) {
        console.log('error:', err);
        return;
    }
    console.log('success:', JSON.stringify(data.rows, null, 2));
    printSearchHit(data.searchHits, "");
});


/**
 * searchHits の内容を出力します。
 * @param searchHits 検索ヒット。
 * @param prefix 階層情報を出力するため、ネストされた構造に追加するプレフィックス。
 */
function printSearchHit(searchHits, prefix) {
    TableStore.util.arrayEach(searchHits, function (searchHit) {
        if (searchHit.highlightResultItem != null) {
            console.log(prefix + "Highlight: \n");
            var strBuilder = ""
            for  (const [key,val]  of searchHit.highlightResultItem.highlightFields.entries()) {
                strBuilder += key + ":[";
                strBuilder += val.fragments.join(",") + "]\n";
                console.log(strBuilder);
            }
        }
        for  (const [key,val]  of searchHit.searchInnerHits.entries()) {
            console.log(prefix + "Path: " + key + "\n");
            console.log(prefix + "InnerHit: \n");
            printSearchHit(val.subSearchHits, prefix + "    ");
        }
    });
}

関連ドキュメント

  • クエリハイライト機能の詳細については、「サマリーとハイライト」をご参照ください。

  • ネストされたフィールドでクエリハイライト機能を使用する方法については、「nested クエリ」をご参照ください。