ES高亮显示匹配结果

  |   0 评论   |   81 浏览

    ES是当前最流行的检索引擎之一,涵盖了丰富的检索功能。支持自行添加插件。
    这里要说的是,如果在检索结果中,高亮显示自定义的匹配结果样式。
    比如如下图
    20191201083044png
    高亮命中了 创业 关键字,这里可以有多种方式来实现:
    1、在后端用java/php等代码处理返回结果,在匹配的字段上增加样式
    2、在前端用js处理匹配的字段,补充样式
    但是这些方式都显得比较麻烦,不够直接。需要我们针对结果再进行二次处理。有没有
    直接在es检索出来的结果中,自带匹配样式呢?

    答案是有的:
    {
    “query”:{
    “match”:{“desc”:"雅马哈 "}
    },

    “highlight”: {
    “fields”: {
    “desc”:{}
    }
    }
    }
    简单的例子,highlight 字段的使用。 在fields字段中,增加需要高亮显示
    的字段,那么在结果中就会出现命中后默认带有高亮标签
    20191201083645png
    如上图中的 首页 | 文 ,自带默认的 标签。

    我们也可以采用自定义的标签,比如
    {
       “query”: {
           “match”:{“content”:“迷你”}
        },
        “highlight”: {
           “pre_tags”: [“<font size=100>”],
           “post_tags”: [“</font>”],
           “fields”: {
               “content”:{}
            }
         }
    }
    在highlight中加上自定义的前缀和后缀,pre_tags与post_tags,改变默认样式。

    在javaAPI中的代码示例如下:
    // 增加高亮
    HighlightBuilder highlightBuilder = new HighlightBuilder().field(“title”).fragmentSize(200).preTags(““).postTags(””);
    SearchRequestBuilder requestBuilder = client.prepareSearch(index).setTypes(type);
    requestBuilder.setFrom(0).setSize(20).highlighter(highlightBuilder);

    效果可看:

    http://ruoyixi.top/

    评论

    发表评论

    validate