在查詢資料時通過設定高亮參數,返回命中查詢詞的片段資訊並對查詢詞進行高亮顯示。僅Text類型欄位支援查詢摘要與高亮功能。
前提條件
已初始化OTSClient。具體操作,請參見初始化OTSClient。
已在資料表上建立多元索引。具體操作,請參見建立多元索引。
注意事項
Table StorePython SDK從6.0.0版本開始支援查詢摘要與高亮功能。使用查詢摘要與高亮功能時,請確保擷取了最新的Python SDK版本。關於Python SDK歷史迭代版本的更多資訊,請參見Python SDK歷史迭代版本。
在MatchQuery和MatchPhraseQuery中使用查詢摘要與高亮功能時,查詢詞可能會被多個pre_tag、post_tag高亮顯示。
如果Text欄位的分詞類型為最大語義分詞,則使用MatchPhraseQuery功能進行資料查詢時不支援使用查詢摘要與高亮功能。
分區切分可能會將文本中的查詢詞分割,此時該查詢詞可能不會被高亮。
參數
參數 | 說明 | |
highlight_encoder | 對高亮分區原文內容的編碼方式。取值範圍如下:
| |
highlight | 欄位高亮參數,僅支援設定SearchQuery中包含關鍵詞查詢的欄位。 | |
highlight_parameters | number_of_fragments | 返回高亮分區的最大數量,推薦設定為1。 |
fragment_size | 每個分區的長度。預設值100。 重要 實際返回分區的長度不會與該值嚴格相等。 | |
pre_tag | 查詢詞高亮的前置Tag,例如 | |
post_tag | 查詢詞高亮的後置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('----- Print Highlight Result:')
search_hits = search_response.search_hits
print('search hit count:%d' % len(search_hits))
for search_hit in search_hits:
print('\t score is %.6f' % search_hit.score)
for highlight_field in search_hit.highlight_result.highlight_fields:
print('\t\t highlight:%s:%s' % (highlight_field.field_name, highlight_field.field_fragments))
print('********** End HighlightQuery **********')