您当前的位置: 首页 >  ar

墨家巨子@俏如来

暂无认证

  • 0浏览

    0关注

    188博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

六.全文检索ElasticSearch经典入门-高亮

墨家巨子@俏如来 发布时间:2022-04-04 13:33:54 ,浏览量:0

前言

本篇文章我们来学习一下如何使用ElasticSearch实现搜索字段的高亮,许多应用都倾向于在每个搜索结果中 高亮 部分文本片段,以便让用户知道为何该文档符合查询条件。在 Elasticsearch 中检索出高亮片段也很容易。

使用Kibana演示高亮

ElasticSearch允许给搜索的字段进行高亮显示,下面是天猫的搜索效果如下: 在这里插入图片描述 我们通过开发工具分析所谓的高亮就是给搜索的关键字加上颜色样式,当然也可以加上其他样式,如下 在这里插入图片描述 下面是使用Kibana演示给ES搜索的结果增加高亮效果语法如下

GET /_search
{
    "query" : {
        "match": { "content": "kimchy" }
    },
    "highlight" : {
        "fields" : {
            "field": {
                "pre_tags": [
                    ""
                ],
                "post_tags": [
                    ""
                ]
            }
        }
    }
}

下面是演示效果 在这里插入图片描述 当执行该查询时,返回结果与之前一样,与此同时结果中还多了一个叫做 highlight 的部分。这个部分包含了 title属性匹配的文本片段,并以 HTML 标签 封装来达到高亮效果。

高亮代码实战

下面案例基于 《ElasticSearch Java实战》的DSL查询案例进行开发,使用ES我们可以轻松做到高亮功能,第一步:增加结果处理器,在集成SpringBoot之后高亮功能失效,需要做高亮结果处理。

@Component
public class HighlightResultMapper implements SearchResultMapper {

    @Override
    public  AggregatedPage mapResults(SearchResponse response, Class aClass, Pageable pageable) {
        // 记录总条数
        long totalHits = response.getHits().getTotalHits();
        // 记录列表(泛型) - 构建Aggregate使用
        List list = Lists.newArrayList();
        // 获取搜索结果(真正的的记录)
        SearchHits hits = response.getHits();
        for (SearchHit hit : hits) {
            if(hits.getHits().length             
关注
打赏
1651329177
查看更多评论
0.0421s