public class ItemSearchImpl implements ItemSearchService {
/**
* 搜索
*
* @param paramMap
* @return
*/
@Autowired
private SolrTemplate solrTemplate;
@Autowired
private RedisTemplate redisTemplate; @Override
public Map<String, Object> search(Map paramMap) { //获取关键字
String keywords = (String) paramMap.get("keywords");
//获取当前页
Integer pageNo = Integer.parseInt(String.valueOf(paramMap.get("pageNo")));
//每页查询多少条
Integer pageSize = Integer.parseInt(String.valueOf(paramMap.get("pageSize"))); //封装查询对象
HighlightQuery query = new SimpleHighlightQuery();
//查询的条件对象·
Criteria criteria = new Criteria("item_keywords").is(keywords);
//将查询条件放入对象
query.addCriteria(criteria);
//计算从第几页开始读
if(pageNo==null || pageNo<=0){
pageNo=1;
}
Integer start = (pageNo-1)*pageSize;
//设置从第几页查询
query.setOffset(start);
//设置每页多少条
query.setRows(pageSize);
//创建高亮显示对象
HighlightOptions highlightOptions = new HighlightOptions();
//设置哪个域需要高亮
highlightOptions.addField("item_title");
//高亮的前缀
highlightOptions.setSimplePrefix("<em style=\" color=red \">");
//高亮的后缀
highlightOptions.setSimplePostfix("</em>");
//将高亮加入到查询对象
query.setHighlightOptions(highlightOptions);
//查询并返回结果
HighlightPage<TbItem> items = solrTemplate.queryForHighlightPage(query, TbItem.class);
//获取带高亮的集合
List<HighlightEntry<TbItem>> highlighted = items.getHighlighted();
List<TbItem> itemList = new ArrayList<>();
//遍历高亮集合
for (HighlightEntry<TbItem> itemHighlightEntry: highlighted) {
TbItem item = itemHighlightEntry.getEntity();
List<HighlightEntry.Highlight> highlights = itemHighlightEntry.getHighlights(); if(highlights!=null && highlights.size()>0){
//获取高亮的标题集合
List<String> highlightTitle = highlights.get(0).getSnipplets();
if(highlightTitle!=null&&highlightTitle.size()>0){
// 获取高亮的标题
String title = highlightTitle.get(0);
item.setTitle(title);
}
}
itemList.add(item);
}
Map<String,Object> resuleMap = new HashMap<>();
//查询到的结果集
resuleMap.put("rows",itemList);
//总页数
resuleMap.put("totalPage",items.getTotalPages());
//总条数
resuleMap.put("total",items.getTotalElements());
return resuleMap; }
}

高亮显示小Demo的更多相关文章

  1. 仿百度下拉关键词,和关键词的小demo

    自己做项目时用到的仿百度下拉关键词 代码: $(function(){ var oTxt = document.getElementById('search_text'); oTxt.onkeyup ...

  2. 入门Leaflet之小Demo

    入门Leaflet之小Demo 写在前面 ---- WebGIS开发基础之Leaflet GIS基本概念:GIS.Map.Layer.Feature.Geometry.Symbol.Data(Poin ...

  3. 新手 gulp+ seajs 小demo

    首先,不说废话,它的介绍和作者就不在多说了,网上一百度一大堆: 我在这里只是来写写我这2天抽空对seajs的了解并爬过的坑,和实现的一个小demo(纯属为了实现,高手请绕道); 一.环境工具及安装 1 ...

  4. Nancy之基于Nancy.Hosting.Self的小Demo

    继昨天的Nancy之基于Nancy.Hosting.Aspnet的小Demo后, 今天来做个基于Nancy.Hosting.Self的小Demo. 关于Self Hosting Nancy,官方文档的 ...

  5. Nancy之基于Nancy.Owin的小Demo

    前面做了基于Nancy.Hosting.Aspnet和Nancy.Hosting.Self的小Demo 今天我们来做个基于Nancy.Owin的小Demo 开始之前我们来说说什么是Owin和Katan ...

  6. Nancy之基于Self Hosting的补充小Demo

    前面把Hosting Nancy with ASP.NET.Self Hosting Nancy和Hosting Nancy with OWIN 以demo的形式简单描述了一下. 这篇是为Self H ...

  7. [Unity3D]做个小Demo学习Input.touches

    [Unity3D]做个小Demo学习Input.touches 学不如做,下面用一个简单的Demo展示的Input.touches各项字段,有图有真相. 本项目已发布到Github,地址在(https ...

  8. Android -- 自定义View小Demo,动态画圆(一)

    1,转载:(http://blog.csdn.NET/lmj623565791/article/details/24500107),现在如下图的效果: 由上面的效果图可以看到其实是一个在一个圆上换不同 ...

  9. Win10 FaceAPI小demo开发问题汇总

    Win10 FaceAPI小demo开发问题汇总 最近使用微软牛津计划做一个小demo,使用FaceAPI做一个小应用,实现刷脸的功能.开发的过程中用到几个问题,具体如下: Stream 与IRand ...

随机推荐

  1. redisTemplate 键值序列化策略

    redisTemplate 键值序列化策略 RedisSerializer<T> StringRedisSerializer JdkSerializationRedisSerializer ...

  2. Python实战之ATM+购物车

    ATM + 购物车 需求分析 ''' - 额度 15000或自定义 - 实现购物商城,买东西加入 购物车,调用信用卡接口结账 - 可以提现,手续费5% - 支持多账户登录 - 支持账户间转账 - 记录 ...

  3. ABP 后台调用接口 获取返回的数据

    原文:https://www.cnblogs.com/i3yuan/p/10703500.html insert 简单测试: public void test8() { string url = &q ...

  4. 7-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(GPRS模块SSL连接MQTT)

    6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(Wi-Fi模块SSL连接MQTT) 由于GPRS是直接和GPRS基站进行连接,其实对于GPRS而言,即使不加 ...

  5. Ubuntu下Thunderbird设置

    安装 apt-get install thunderbird(software) thunderbird-locale-zh-cn(汉化包) 添加最小化插件 附加组件里安装 MinimizeToTra ...

  6. django -- ORM实现出版社增删改查

    前戏 我们来完成一个图书管理系统的增删改查 表结构设计 1. 出版社 id   name 2. 作者 id  name 3. 书 id  title  出版社_id 4. 作者_书_关系表 id  书 ...

  7. dijkstra算法的堆优化

    普通的dijkstra算法模板: //数据结构 int g[LEN][LEN]; //邻接矩阵 int vis[LEN]; //标记是否访问 int dist[LEN] //源点到各点的距离 fill ...

  8. 一篇文章看懂mysql中varchar能存多少汉字、数字,以及varchar(100)和varchar(10)的区别

    看完这篇文章,你能搞清楚以下问题: 1.varchar(100)和varchar(10)的区别在哪里? 2.varchar能存多少汉字.数字? 3.varchar的最大长度是多少呢? 4.字符.字节. ...

  9. python3 pathlib库中的Path类的使用

    调用库 from pathlib import Path 获取 Path 的文件名 Path.name 参考 https://blog.csdn.net/amanfromearth/article/d ...

  10. 本地VS调试服务器 IIS 程序

    由于读书的关系,毕业后选择在武汉,工作三年,至今年5月份挪窝到沿海某二线城市,换城市相当于裸辞,一切从头开始,新的城市,新的居住地,新的空气,新工作,新挑战.一直忙忙碌碌,孜孜不倦的汲取着,担心脱队, ...