become who you want to|

张三Blog

园龄:3年4个月粉丝:3关注:0

使用ElaticSearch来完成高亮搜索

直接上代码没啥好说的 能看懂的就很简单真的没啥

private Page<CompanyBasicInfo> companyPage(NativeSearchQuery queryBuilder, Page<CompanyBasicInfo> page) {

        page = elasticsearchTemplate.
                queryForPage(queryBuilder, CompanyBasicInfo.class, new SearchResultMapper() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public <T> AggregatedPage<T> mapResults(SearchResponse response, Class<T> clazz, Pageable pageable) {

                        SearchHits searchHits = response.getHits();
                        SearchHit[] hits = searchHits.getHits();
                        ArrayList<CompanyBasicInfo> products = new ArrayList<>();
                        for (SearchHit hit : hits) {
                            CompanyBasicInfo product = new CompanyBasicInfo();
                            //原始map
                            Map<String, Object> sourceAsMap = hit.getSourceAsMap();
                            //LOGO
                            product.setOrgLogo((String) sourceAsMap.get("orgLogo"));
                            product.setId((String) sourceAsMap.get("id"));
                            product.setEntName(sourceAsMap.get("entName").toString());  // 公司名称
                            product.setEnterpriseStatus(sourceAsMap.get("enterpriseStatus").toString());    // 经营状态
                            product.setCorporation(sourceAsMap.get("corporation").toString());  // 法定代表人
                            product.setRegCapital(sourceAsMap.get("regCapital").toString());    // 注册资本
                            product.setRegDate(sourceAsMap.get("regDate").toString());      // 企业成立日期
                            product.setEmail(sourceAsMap.get("email").toString());      // 邮箱
                            product.setTelphone((String) sourceAsMap.get("telphone"));   // 电话
                            product.setScore((String) sourceAsMap.get("score"));         // 评分
                            product.setAddress(sourceAsMap.get("address").toString());  // 地址
                            // 高亮字段

                            Map<String, HighlightField> highlightFields = hit.getHighlightFields();
                            if (highlightFields.get("entName") != null) {
                                String nameHighlight = highlightFields.get("entName").getFragments()[0].toString();
                                product.setEntName(nameHighlight);
                            }
                            products.add(product);
                        }
                        return new AggregatedPageImpl<T>((List<T>) products);
                    }
                });

        return page;
    }

本文作者:张三Blog

本文链接:https://www.cnblogs.com/zhangsan-plus/p/16503302.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   张三Blog  阅读(24)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起