一、概念
使用 Elasticsearch 的高亮功能,你可以在返回的搜索结果中为特定字段中的匹配词条添加 HTML 标签。你可以选择要高亮的字段,以及用于高亮的前缀和后缀标签。
比如当你的检索词为:刑法,当你使用默认高亮时高亮会为你返回<em>刑法</em>
二、使用方式及参数
参数 | 含义 |
fields | 指定高亮字段,每个字段内可单独配置字段对应高亮选项 |
require_field_match | 是否只有查询字段可以高亮,默认为true; 设置为false则所有字段可以进行高亮 |
order | 高亮片段排序规则,不指定默认按照片段出现顺序,可指定为score按照片段匹配得分排序 |
fragmenter | 片段切割器,可以指定为simple和span两种模式; 对于simple,在使用时需要制定 每段长度及总段数; 而对于span,相当于自动根据匹配跨度分段,我们在使用时只需要制定段数就可以,相当于更加智能;但你在接受他某些时刻智能切分出好文本段的时候,也要接受它的段让你头疼 |
type | 高亮器类型选用: plain:默认常规高亮器 posting:不常用,需要使用词向量,但预期不准确 fvh:需要开启词向量,并且使用时性能较高,在字段映射时设置 |
fragment_size |
高亮段文本长度 |
number_of_fragments |
返回多少段高亮文本,默认为5 |
no_match_size | 当没有高亮文本进行匹配,返回文本长度(从头部开始);一般使用时不会开启,默认不会返回; |
highlight_query | 对高亮进行查询式重定,当使用该方式时,满足查询dsl的命中片段会被高亮 |
pre_tags | 前置标签设置 默认<em> |
post_tags | 后置标签设置 默认</em> |
三、highlight_query详解及示例
下面为示例,该示例表示,对content字段进行match查询,但高亮字段为content_cn,并且该字段需满足查询dsl的命中片段会被高亮
GET /test_index/_search
{
"_source": {
"include": [
"title_cn",
"content_cn"
]
},
"query": {
"match": {
"content": "库里"
}
},
"highlight": {
"fields": {
"content_cn": {}
},
"highlight_query": {
"match_phrase": {
"content_cn": {
"query": "詹姆斯"
}
}
}
}
}
Response
{
"_index": "test_index",
"_type": "_doc",
"_id": "6efc9305b7b27b30154336984c62f9b2",
"_score": 28.185057,
"_source": {
"title_cn": "elatcisearch高亮攻略(2017)"
},
"highlight": {
"content_cn": [
"如果我是勒布朗·<em>詹姆斯<em>的教练,我可能会有以下几点感想:
尊重和欣赏:作为篮球历史上最杰出的球员之一,勒布朗·詹姆斯的天赋、技能和对比赛的热爱是毋庸置疑的。作为他的教练,我会非常尊重他的能力,并感激能有机会与这样的运动员一起工作。"
]
}
}
在使用过程中,可以将该种方式为最终解决方案; 但注意highlight_query也会额外构建结果集的二次查查询,会消耗额外的性能;
三、fvh高亮器使用方式(优化性能)
上文提到fvh的高亮器选择:使用fvh前需要对字段开启词向量,在字段映射时设置 term_vector
为 "with_positions_offsets"后,fvh高亮器可以使用词向量的词条位置,快速定位词条片段,并生成高亮;但是注意,该种方式也需要额外的索引空间;
下方进行简单示例:
在某些时候,我们的一些字段开启了词向量分析,那么我们在使用的时候可以试图考虑一下,是否可以就坡下驴的使用该种高亮器,来优化我们的性能;
四、总结
使用高亮时,主要注意设置number_of_fragment及fragment_size,如遇深度高亮使用可以进行highlight_query的使用;
在开启词向量后,可以尝试使用fvh高亮器提升效率文章来源:https://www.toymoban.com/news/detail-724128.html
(优化永无止境)文章来源地址https://www.toymoban.com/news/detail-724128.html
到了这里,关于[Elasticsearch]高亮使用方式及参数详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!