会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132474个问题
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 13608楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术 13609楼
WEB前端全系列/第十三阶段:微信小程序-安心食疗(旧)/安心食疗-项目基础配置 13610楼
Python 全系列/第十阶段:Flask百战电商后台项目/Flask百战电商后台项目 13611楼
JAVA 全系列/第二十一阶段:分布式医疗云平台/系统管理前后端开发(旧) 13613楼

老师我这个查询结果是这样,已经使用了ik分词器,正常应该是华为啊,麻烦老师帮看下

Item{id='20201', title='<em>华</em><em>为</em>荣耀play手机', sellPoint=' 打游戏', price=199900, num=999}

Item{id='20200', title='<em>华</em><em>为</em> p30 手机', sellPoint=' 拍照好', price=399900, num=999}

代码

 @Test
    public void testHighlight(){
        HighlightBuilder.Field field = new HighlightBuilder.Field("title");
        field.preTags("<em>");
        field.postTags("</em>");
        NativeSearchQuery query =
                new NativeSearchQueryBuilder()
                        //分页
                        .withSort(SortBuilders.fieldSort("price").order(SortOrder.ASC))
                        //排序
                        .withPageable(PageRequest.of(0, 2))
                        //搜索条件
                        .withQuery(QueryBuilders.matchQuery("title","华为"))
                        //设置高亮字段
                        .withHighlightFields(field)
                        .build();
        AggregatedPage<Item> pageResult =restTemplate.queryForPage(query, Item.class, new SearchResultMapper() {
           //处理搜索结果,搜索完整结果,也就是那个集合
            //response -就是搜索结果,相当一 kibana 中执行搜索的结果内容
            //clazz -就是返回结果的具体类型
            //pageable -分页处理,就是 queryForPage 方法参数query 中的 pageable 对象
            @Override
            public <T> AggregatedPage<T> mapResults(SearchResponse searchResponse, Class<T> aClass, Pageable pageable) {
                //获取搜索结果数据 相当于在查询结果中的 hits
                SearchHit[] hits =searchResponse.getHits().getHits();
                List<T> resultList = new ArrayList<>();//最终结果集合
                for (SearchHit hit :hits) {
                    //搜索的 source 源
                    Map<String,Object> map=hit.getSourceAsMap();
                    Item item =new Item();
                    item.setId(map.get("id").toString());
                    item.setSellPoint(map.get("sellPoint").toString());
                    item.setPrice(Long.parseLong(map.get("price").toString()));
                    item.setNum(Integer.parseInt(map.get("num").toString()));

                    //高亮数据处理 key-字段名 value-高亮数据结果
                    Map<String , HighlightField> highlightFieldMap=hit.getHighlightFields();
                    HighlightField highlightField = highlightFieldMap.get("title");
                    if (highlightField==null){
                        item.setTitle(map.get("title").toString());
                    }else{//有高亮的 title
                        item.setTitle(highlightField.getFragments()[0].toString());
                    }
                        resultList.add((T)item);
                }

            //返回结果处理
                return new AggregatedPageImpl<T>(resultList,pageable,searchResponse.getHits().getTotalHits());
            }

            //不提供实现,这个是处理每个搜索结果方法
            @Override
            public <T> T mapSearchHit(SearchHit searchHit, Class<T> aClass) {
                return null;
            }
        });
        for (Item item :pageResult.getContent()) {
            System.out.println(item);
        }


    }
}


JAVA 全系列/第十四阶段:全文检索服务/Spring Data For ElasticSearch 13616楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器 13617楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 13618楼
WEB前端全系列/第一阶段:HTML5+CSS3模块/HTML5基础元素 13619楼

egoshop.zip

老师 您看看 这是什么问题啊

WEB前端全系列/第二十阶段:Vue2企业级项目(旧)/Ego商城高级Vue实战项目 13620楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637