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. linux增加swap空间的方法小结

    起因及背景 近期编译AOSP(android 10.0)是总是遇到内存溢出,查了半天,无果.猜测增加下swap空间大小是否能解决,随即尝试下,果然是如此. 当然,还有其他作法,比如直接增加主机的内存( ...

  2. 目标检测论文解读9——R-FCN

    背景 基于ResNet 101的Faster RCNN速度很慢,本文通过提出Position-sensitive score maps(位置敏感分值图)来给模型加速. 方法 首先分析一下,为什么基于R ...

  3. 张兴盼-201871010131 《面向对象程序设计(java)》第六、七周学习总结

    张兴盼-201871010131 <面向对象程序设计(java)>第六.七周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh ...

  4. C#中的函数(三)参数传递及返回值

    接前面二篇,继续开始新的研究 前面忘了说什么是主调函数与被调函数 主调函数:执行调用其它函数语句所在的函数 被调函数:被其它函数所调用的函数 简单说就是一个是发起调用者,另一个是被调用者 写个小例子说 ...

  5. LOJ#107. 维护全序集(FHQ Treap)

    题面 传送门 题解 板子,没啥好说的 //minamoto #include<bits/stdc++.h> #define R register #define inline __inli ...

  6. 【java异常】Unexpected error occurred in scheduled task. java.lang.StackOverflowError: null

    可能是栈溢出(StackOverFlow) 背景:我用定时器new东西 原因:频率太快了好像!

  7. 【java异常】Parsing error was found in mapping #{}. Check syntax #{property|(expression), var1=value1, var2=val

    在增删改查的过程中有一个#{ }没有填写

  8. freeradius client 和jradius安装编译

    freeradius client radtest只是用来调试的,radclient功能更强大.用法如下: From the man page we can see that radclient gi ...

  9. 操作excel文件爬取nvd.nist数据

    #!/usr/bin/env python # encoding: utf-8 #@author: jack import random from time import sleep import p ...

  10. Python之文件读写(csv文件,CSV库,Pandas库)

    前言 一.Python文件读取 二.读取CSV文件 一.Python文件读取 1. open函数是内置函数之with操作 - 关于路径设置的问题斜杠设置成D:\\文件夹\\文件或是D:/文件夹/文件 ...