クエリリクエストを開始するときに、強調表示機能を有効にすることができます。この場合、クエリ条件を満たす結果のキーワードが強調表示されます。Text フィールドのみが強調表示機能をサポートしています。
前提条件
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化を参照してください。
データテーブルが作成され、データがデータテーブルに書き込まれていること。詳細については、データテーブルの作成およびデータの書き込みを参照してください。
データテーブルの検索インデックスが作成されていること。詳細については、検索インデックスの作成を参照してください。
使用上の注意
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 | 強調表示されたテキストフラグメントのエンコード方式。有効な値:
| |
highlight | フィールドの強調表示設定。SearchQuery オブジェクトで指定されたキーワードを含むフィールドに対してのみ、強調表示機能を有効にすることができます。 | |
highlight_parameters | number_of_fragments | 返される強調表示されたテキストフラグメントの最大数。このパラメーターを 1 に設定することをお勧めします。 |
fragment_size | 返される各テキストフラグメントの長さ。デフォルト値: 100。 重要 返されるテキストフラグメントの実際の長さは、このパラメーターの値と異なる場合があります。 | |
pre_tag | クエリキーワードを強調表示するために使用される開始タグ。例: | |
post_tag | クエリキーワードを強調表示するために使用される終了タグ。例: | |
fragments_order | 返される強調表示されたテキストフラグメントのソートルール。
|
例
次のサンプルコードは、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 の終了 **********') # 翻訳済
参照
強調表示機能の詳細については、キーワードの強調表示を参照してください。
ネストされたフィールドをクエリするときに強調表示機能を使用する方法の詳細については、ネストされたクエリを参照してください。