[Elasticsearch]高亮使用方式及参数详解

一、概念

使用 Elasticsearch 的高亮功能,你可以在返回的搜索结果中为特定字段中的匹配词条添加 HTML 标签。你可以选择要高亮的字段,以及用于高亮的前缀和后缀标签。

比如当你的检索词为:刑法,当你使用默认高亮时高亮会为你返回<em>刑法</em>

二、使用方式及参数

参数 含义
fields指定高亮字段,每个字段内可单独配置字段对应高亮选项
require_field_match是否只有查询字段可以高亮,默认为true; 设置为false则所有字段可以进行高亮
order                        高亮片段排序规则,不指定默认按照片段出现顺序,可指定为score按照片段匹配得分排序
fragmenter

片段切割器,可以指定为simple和span两种模式;

对于simple,在使用时需要制定 每段长度及总段数;

而对于span,相当于自动根据匹配跨度分段,我们在使用时只需要制定段数就可以,相当于更加智能;但你在接受他某些时刻智能切分出好文本段的时候,也要接受它的段让你头疼

type

高亮器类型选用:

plain:默认常规高亮器

posting:不常用,需要使用词向量,但预期不准确

fvh:需要开启词向量,并且使用时性能较高,在字段映射时设置 term_vector 为 "with_positions_offsets"后,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高亮器可以使用词向量的词条位置,快速定位词条片段,并生成高亮;但是注意,该种方式也需要额外的索引空间;

下方进行简单示例:

d29d37b472654086ada7e6c7ee782610.png

 在某些时候,我们的一些字段开启了词向量分析,那么我们在使用的时候可以试图考虑一下,是否可以就坡下驴的使用该种高亮器,来优化我们的性能;

四、总结

使用高亮时,主要注意设置number_of_fragment及fragment_size,如遇深度高亮使用可以进行highlight_query的使用;

在开启词向量后,可以尝试使用fvh高亮器提升效率

(优化永无止境)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值