public List<WOSearchModel> searchOrder(OrderSearchReqVO request) throws Exception{
List<WOSearchModel> woSearchModels = new ArrayList<>();

//设置高亮显示
 HighlightBuilder highlightBuilder = new HighlightBuilder().field("*").requireFieldMatch(false);
highlightBuilder.preTags(EagleConst.PRE_TAGS);
highlightBuilder.postTags(EagleConst.POST_TAGS);

//搜索title和orperator和detail
//TODO: 搜索项目名称
QueryStringQueryBuilder queryBuilder = new QueryStringQueryBuilder(request.getKeyWord());
queryBuilder.analyzer(EagleConst.ES_ANALYSER);
queryBuilder.field(EagleConst.ORDER_TITLE).field(EagleConst.ORDER_OPERATOR).field(EagleConst.ORDER_DETAIL);

//搜索
SearchRequestBuilder searchRequestBuilder = eagleTcpClient.getClient().prepareSearch(EagleConst.INDEX)
.setFrom(request.getStart())
.setSize(request.getSize())
.setTypes(EagleConst.TYPE)
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
//.setQuery(builder)
.setQuery(queryBuilder)
.highlighter(highlightBuilder)
.setExplain(true); //设置是否按查询匹配度排序
SearchResponse searchResponse = searchRequestBuilder.get();

//获取搜索结果
SearchHits searchHits = searchResponse.getHits();

SearchHit[] hits = searchHits.getHits();
if (hits != null && hits.length != 0){
for (SearchHit hit : hits) {
List<String> highLights = new ArrayList<>();
Map<String, HighlightField> highlightFields = hit.getHighlightFields();
Map<String, Object> source = hit.getSource();
//处理高亮 获取高亮字符串
if (highlightFields != null && highlightFields.size() != 0){
String[] needHighLightFields = new String[]{EagleConst.ORDER_TITLE, EagleConst.ORDER_DETAIL, EagleConst.ORDER_OPERATOR};
for (String needHighLightField : needHighLightFields){
HighlightField titleField = highlightFields.get(needHighLightField);
if(titleField != null){
Text[] fragments = titleField.fragments();
if (fragments != null && fragments.length != 0){
StringBuilder name = new StringBuilder();
for (Text text : fragments) {
name.append(text);
}
source.put(needHighLightField, name.toString());
highLights.add(needHighLightField + ":" + name.toString());
}
}
}
}
WOSearchModel woSearchModel = new WOSearchModel();
woSearchModel.setHighLightTexts(highLights);
OrderModel orderModel = new OrderModel();
BeanUtils.populate(orderModel, source);
woSearchModel.setModel(orderModel);
StringBuilder urlStringBuilder = new StringBuilder();
urlStringBuilder.append(EagleConst.URL_PRE).append("ids=").append(orderModel.getId())
.append("&tenantId=").append(orderModel.getTenantId()).append("&projectId=").append(orderModel.getProjectId());
woSearchModel.setUrl(urlStringBuilder.toString());
woSearchModels.add(woSearchModel);
}
}

return woSearchModels;
}

ElasticSearch 5.X 搜索并用高亮显示的更多相关文章

  1. 搜索结果高亮显示(不改变html标签)

      分类: 代码2010-02-28 13:44 1574人阅读 评论(3) 收藏 举报 htmlinputstring 一.问题的产生 搜索结果高亮显示,在新闻标题,来源之类的地方好做,只需要用st ...

  2. asp实现关键词不区分大小写搜索并高亮显示

    用ASP做搜索很容易,但要实现智能搜索这类就比较累一点,其实任何程序都差不多,主要还是看数据库的处理能力,一般小网站ASP经常跟ACCESS数据库搭配,在这种配置下我们要实现关键词不区分大小写搜索并高 ...

  3. elasticsearch的rest搜索--- 查询

    目录: 一.针对这次装B 的解释 二.下载,安装插件elasticsearch-1.7.0   三.索引的mapping 四. 查询 五.对于相关度的大牛的文档 四. 查询 1. 查询的官网的文档   ...

  4. elasticsearch实现网站搜索

    使用elasticsearch 实现网站搜索,可以支持商品搜索,筛选项过滤搜索 ,价格排序, 打分 筛选项聚合,还有其他综合排序 后续推出搜索人工干预排序,根据销量,好评率,售卖率 进行全方位的搜索实 ...

  5. Python 和 Elasticsearch 构建简易搜索

    Python 和 Elasticsearch 构建简易搜索 作者:白宁超 2019年5月24日17:22:41 导读:件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正 ...

  6. CentOS 7.4 下搭建 Elasticsearch 6.3 搜索群集

    上个月 13 号,Elasticsearch 6.3 如约而至,该版本和以往版本相比,新增了很多新功能,其中最令人瞩目的莫过于集成了 X-Pack 模块.而在最新的 X-Pack 中 Elastics ...

  7. 笔记13:Python 和 Elasticsearch 构建简易搜索

    Python 和 Elasticsearch 构建简易搜索 1 ES基本介绍 概念介绍 Elasticsearch是一个基于Lucene库的搜索引擎.它提供了一个分布式.支持多租户的全文搜索引擎,它可 ...

  8. elasticsearch联想加搜索实例

    //搜索框具体的ajax如下: <form class="form-wrapper cf"> <img src="__PUBLIC__/Home/img ...

  9. spring data solr 搜索关键字高亮显示

    spring data solr 搜索关键字高亮显示 public Map<String, Object> highSearch(Map searchMap) { Map map = ne ...

随机推荐

  1. J-Link Version

    "J-Link / Flasher Portable V1 " "J-Link ARM / Flasher ARM V2 " "J-Link ARM ...

  2. stm-ledstrip : Driver and test routine for WS2811 RGB-LED

    stm-ledstrip : Driver and test routine for WS2811 RGB-LED #include "ws2812.h" #include < ...

  3. linux 内核升级 转

    inux 内核升级 2011-03-25 23:13:28 分类: LINUX 因要测试一些软件,需要2.6.30以上的内核,安装好CentOS 5.5,内核是2.6.18-194.el5.这次的升级 ...

  4. UVA 303 Pipe

    点击打开链接 题意: 求光线能达到的最大横坐标 注意光线可以和管道重合 也可以经过转折点 解法: 枚举每种光线是否能通过每个转折点的截面(线段)即可 //大白p263 #include <cma ...

  5. 在使用SQLServer时忘记sa账号密码解决办法

    先以windows 身份验证方式登录SQLServer数据库,如下图所示: 打开查询分析器,运行如下代码: sp_password Null,'新密码','sa' 即可把原来的密码修改成新密码 例如: ...

  6. 娓娓道来c指针 (7)指针运算

    (7)指针运算 在前几篇文章中,我们已经见过指针运算的使用场景,并多次使用指针运算来进行验证. 这里我们来特别地总结下.指针运算的本质含义. 在c语言中.如果p.pa.pb都是某种类型的指针,这种运算 ...

  7. Lucene 3.0 输出相似度

    http://www.cnblogs.com/ibook360/archive/2011/10/19/2217638.html Lucene3.0之结果排序(原理篇) 传统上,人们将信息检索系统返回结 ...

  8. 使用Axure RP原型设计实践06,登录验证

    登录验证主要功能包括: ● 用户名错误,提示无效用户名,用户名和密码文本框清空● 用户名存在,密码错误,提示密码错误,密码清空,焦点进入密码框● 用户名和密码都正确,验证通过 本篇接着"使用 ...

  9. maven生命周期理解

    你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点.当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期. 知道了每套生命周期的大概用途和相互关系 ...

  10. tms mqtt

    tms mqtt 功能概述 MQTT客户端组件 可用于VCL,FMX和LCL应用 支持Windows,iOS,Android,macOS,Linux,Raspberry Pi 实现完整的MQTT规范, ...