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. Unity 渲染教程(一):矩阵

    转载:http://gad.qq.com/program/translateview/7181958 创建立方体网格.· 支持缩放.位移和旋转. · 使用变换矩阵. · 创建简单的相机投影. 这是关于 ...

  2. 1-剑指offer: 数组中出现次数超过一半的数字

    题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...

  3. Mybatis-plus中如何排除非表字段的三种方式

    1.transient关键字 2.使用静态变量(static) 3.TableField(exit=false) 这三种方式可以在使用的过程中,是这个对象中的属性不被序列化.(直接被忽略)

  4. Centos7离线部署docker

    下载docker离线包 wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.5.tgz 解压 tar -x ...

  5. Mac 键盘符号说明

    Mac 键盘符号说明 ⌘ == Command ⇧ == Shift ⇪ == Caps Lock ⌥ == Option ⌃ == Control ↩ == Return/Enter ⌫ == De ...

  6. scannet数据集

    数据集包含xyz和label信息,不包含颜色信息. 一共1513个室内场景数据(每个场景中点云数量都不一样),共21个类别的对象(0-20,总共已知类别应该是20,类别0应该是未知类别,即未标注点云) ...

  7. restql 学习二 几种查询模式

    restql 提供了比较强大的查询处理. 支持的几种查询模式 基本查询,主要是单一映射资源的查询,(from,with,only,header,cache...) 并行查询,多个资源的同时查询,(对于 ...

  8. <虚树+树型DP> SDOI2011消耗战

    <虚树+树型DP> SDOI2011消耗战 #include <iostream> #include <cstdio> #include <cstring&g ...

  9. Makefile文件基本格式

    以下是Makefile的基本模板 #指定编译器CC = g++#指定编译参数CFLAGS = -std=c++11 #指定头文件路径,此处用于指定非标准库的头文件路径INC = -I./ -I /us ...

  10. SWIG 3 中文手册——2. 引言

    目录 2 引言 2.1 SWIG 是什么? 2.2 为什么使用 SWIG? 2.3 一个 SWIG 示例 2.3.1 SWIG 接口文件 2.3.2 swig 命令 2.3.3 构建 Perl5 模块 ...