在查詢數據時通過設置高亮參數,返回命中查詢詞的片段信息并對查詢詞進行高亮顯示。僅Text類型字段支持查詢摘要與高亮功能。
前提條件
已初始化OTSClient。具體操作,請參見初始化OTSClient。
已在數據表上創建多元索引。具體操作,請參見創建多元索引。
注意事項
表格存儲Python 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 **********')