在查询数据时通过设置高亮参数,返回命中查询词的片段信息并对查询词进行高亮显示。仅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 **********')