摘要與高亮
在查詢數(shù)據(jù)時(shí)通過(guò)設(shè)置高亮參數(shù),返回命中查詢?cè)~的片段信息并對(duì)查詢?cè)~進(jìn)行高亮顯示。僅Text類型字段支持查詢摘要與高亮功能。
前提條件
已初始化OTSClient。具體操作,請(qǐng)參見(jiàn)初始化OTSClient。
已創(chuàng)建數(shù)據(jù)表并寫入數(shù)據(jù)。具體操作,請(qǐng)參見(jiàn)創(chuàng)建數(shù)據(jù)表和寫入數(shù)據(jù)。
已在數(shù)據(jù)表上創(chuàng)建多元索引。具體操作,請(qǐng)參見(jiàn)創(chuàng)建多元索引。
注意事項(xiàng)
表格存儲(chǔ)Python SDK從6.0.0版本開(kāi)始支持查詢摘要與高亮功能。使用查詢摘要與高亮功能時(shí),請(qǐng)確保獲取了最新的Python SDK版本。關(guān)于Python SDK歷史迭代版本的更多信息,請(qǐng)參見(jiàn)Python SDK歷史迭代版本。
在MatchQuery和MatchPhraseQuery中使用查詢摘要與高亮功能時(shí),查詢?cè)~可能會(huì)被多個(gè)pre_tag、post_tag高亮顯示。
如果Text字段的分詞類型為最大語(yǔ)義分詞,則使用MatchPhraseQuery功能進(jìn)行數(shù)據(jù)查詢時(shí)不支持使用查詢摘要與高亮功能。
分片切分可能會(huì)將文本中的查詢?cè)~分割,此時(shí)該查詢?cè)~可能不會(huì)被高亮。
參數(shù)
參數(shù) | 說(shuō)明 | |
highlight_encoder | 對(duì)高亮分片原文內(nèi)容的編碼方式。取值范圍如下:
| |
highlight | 字段高亮參數(shù),僅支持設(shè)置SearchQuery中包含關(guān)鍵詞查詢的字段。 | |
highlight_parameters | number_of_fragments | 返回高亮分片的最大數(shù)量,推薦設(shè)置為1。 |
fragment_size | 每個(gè)分片的長(zhǎng)度。默認(rèn)值100。 重要 實(shí)際返回分片的長(zhǎng)度不會(huì)與該值嚴(yán)格相等。 | |
pre_tag | 查詢?cè)~高亮的前置Tag,例如 | |
post_tag | 查詢?cè)~高亮的后置Tag,例如 | |
fragments_order | 當(dāng)高亮字段返回多個(gè)分片時(shí),分片的排序規(guī)則。
|
示例
以下示例用于使用MatchQuery功能查詢表中Col_Text列的值能夠匹配hangzhou shanghai
的數(shù)據(jù),并在返回結(jié)果中對(duì)查詢?cè)~進(jìn)行高亮顯示。其中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 **********')