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

Tablestore:クエリ結果の強調表示

最終更新日:Dec 28, 2024

クエリリクエストを開始するときに、強調表示機能を有効にすることができます。この場合、クエリ条件を満たす結果のキーワードが強調表示されます。Text フィールドのみが強調表示機能をサポートしています。

前提条件

使用上の注意

  • Python 6.0.0 以降の Tablestore SDK のみ強調表示機能を提供しています。強調表示機能を使用する前に、最新バージョンの Tablestore SDK for Python をインストールすることをお勧めします。 Tablestore SDK for Python のバージョンについては、Tablestore SDK for Python のバージョン履歴を参照してください。

  • 一致クエリまたは一致フレーズクエリで強調表示機能を有効にすると、クエリ結果のキーワードは、複数の開始タグ (pre_tag) と終了タグ (post_tag) を使用して強調表示されます。

  • Text フィールドのトークン化方式が最大意味単位ベースのトークン化 (MaxWord) の場合、Text フィールドで一致フレーズクエリを実行するときに強調表示機能はサポートされません。

  • クエリ内のキーワードが分割されている場合、キーワードは期待どおりに強調表示されない場合があります。

パラメーター

パラメーター

説明

highlight_encoder

強調表示されたテキストフラグメントのエンコード方式。有効な値:

  • PLAIN (デフォルト): エンコードする必要なく、強調表示されたテキストフラグメントを表示します。

  • HTML_MODE: 強調表示されたテキストフラグメントで HTML エンコードを実行します。HTML エンコードが完了すると、<&lt; に、>&gt; に、"&quot; に、'&#x27; に、/&#x2F; に変換されます。Web ページを表示する場合は、HTML 形式を使用することをお勧めします。

highlight

フィールドの強調表示設定。SearchQuery オブジェクトで指定されたキーワードを含むフィールドに対してのみ、強調表示機能を有効にすることができます。

highlight_parameters

number_of_fragments

返される強調表示されたテキストフラグメントの最大数。このパラメーターを 1 に設定することをお勧めします。

fragment_size

返される各テキストフラグメントの長さ。デフォルト値: 100。

重要

返されるテキストフラグメントの実際の長さは、このパラメーターの値と異なる場合があります。

pre_tag

クエリキーワードを強調表示するために使用される開始タグ。例: <em> および <b>。デフォルト値: <em>。ビジネス要件に基づいて開始タグを指定できます。 preTag パラメーターは、次の文字セットをサポートしています: < > " ' /a-zA-Z、および 0-9

post_tag

クエリキーワードを強調表示するために使用される終了タグ。例: </em> および </b>。デフォルト値: <em>。ビジネス要件に基づいて終了タグを指定できます。 postTag パラメーターは、次の文字セットをサポートしています: < > " ' /a-zA-Z、および 0-9

fragments_order

返される強調表示されたテキストフラグメントのソートルール。

  • TEXT_SEQUENCE (デフォルト): 強調表示されたテキストフラグメントは、元のテキストでの出現順にソートされます。

  • SCORE: 強調表示されたテキストフラグメントは、ヒットキーワードのスコアに基づいてソートされます。

次のサンプルコードは、MatchQuery 機能を使用して Col_Text フィールドから hangzhou shanghai に一致するデータをクエリし、クエリ結果のキーワードを強調表示する方法の例を示しています。この例では、Col_Text フィールドは Text 型です。

def match_query_with_highlight(client):
    query = MatchQuery('Col_Text', 'hangzhou shanghai')
    highlight_parameter = HighlightParameter('Col_Text',None,None,pre_tag='<b>',post_tag='</b>')
    highlight_clause = Highlight([highlight_parameter],HighlightEncoder.PLAIN_MODE)
    search_response = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
        SearchQuery(query, limit=100, get_total_count=True,highlight=highlight_clause),
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    )
    print('----- 強調表示結果の出力:') # 翻訳済
    search_hits = search_response.search_hits
    print('検索ヒット数:%d' % len(search_hits)) # 翻訳済

    for search_hit in search_hits:
        print('\t スコアは %.6f です' % search_hit.score) # 翻訳済
        for highlight_field in search_hit.highlight_result.highlight_fields:
            print('\t\t 強調表示:%s:%s' % (highlight_field.field_name, highlight_field.field_fragments)) # 翻訳済

    print('********** HighlightQuery の終了 **********') # 翻訳済

参照

  • 強調表示機能の詳細については、キーワードの強調表示を参照してください。

  • ネストされたフィールドをクエリするときに強調表示機能を使用する方法の詳細については、ネストされたクエリを参照してください。