Elasticsearch搜索详解(四):高亮命中关键字

通常显示在网页上时,用不同颜色标记出搜索命中的是哪些关键字是很有用的,这就要用到 highlight 参数。

举个例子,

GET /_search
{
    "query" : {
        "multi_match": { "query": "投资" }
    },
    "highlight" : {
        "fields" : {
            "title": {},
            "summary" : {}
        }
    }
}

返回的结果里面每个 hit 多了一个类似这样部分:

"highlight" : {
          "summary" : [
            "它利用非金融性<em>资</em>产能源源不断地在证券市场上融<em>资</em>,采取发行新股和引入风险<em>投</em><em>资</em>相结合收购恒昌企业,结果各方均取得了满意的结果。",
            "其融<em>资</em>的方式主要有发行新股、可换股债券、引入风险<em>投</em><em>资</em>等。而这些巨额的融<em>资</em>行动是和<em>投</em><em>资</em>银行紧密充分的合作分不开的。从中得出一些对我国上市公司并购融<em>资</em>有益的启示,可作为并购融<em>资</em>实践的参考。"
          ],
          "title" : [
            "中信泰富的并购融<em>资</em>"
          ]
        }

看例子很容易理解,但必须满足一个条件,highlight 里的字段必须是 query 里有的字段,而且query 的字段不能是 _all。highlight 也有3中,分别介绍。

定制 highlight

下面的参数可以改变返回的结果。即可以为单独的字段设置不同的参数,也可以作为 highlight 的属性统一定义。

number_of_fragments
        fragment 是指一段连续的文字。返回结果最多可以包含几段不连续的文字。默认是5。

fragment_size
       一段 fragment 包含多少个字符。默认100。

pre_tags
       标记 highlight 的开始标签。例如上面的<em>。

post_tags
       标记 highlight 的结束标签。例如上面的</em>。

encoder
       说明字段是否为 html 格式,default:不是,html: 是。

no_match_size
       即使字段中没有关键字命中,也可以返回一段文字,该参数表示从开始多少个字符被返回。

还有更多的参数请参考官方文档

 

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值