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

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

举个例子,

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

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

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

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

定制 highlight

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

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

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

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

post_tags
       标记 highlight 的结束标签。例如上面的

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

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

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

 

你可能感兴趣的:(Elasticsearch)