Solr专题(三)SSM项目整合Solr
一、环境配置
所需要的jar包: org.apache.solr.solr-solrj
maven依赖:
<!-- https://mvnrepository.com/artifact/org.apache.solr/solr-solrj -->
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>7.7.2</version>
</dependency>
二、教程
solr查询方法:
/**
* 执行solr查询
* @param query SolrQuery
* @param pageNo 页码
* @param pageSize 页面数据大小
* @param orderBy 排序
* @return Map<String, Object>
*/
public Map<String, Object> getSolrQuery(String query, String pageNo, String pageSize, String orderBy){
SolrQuery solrQuery = new SolrQuery();
solrQuery.set(CommonParams.Q, query);
Map<String, Object> map = Maps.newHashMap();
map.put("total", 0);
map.put("rows", Collections.emptyList());
try {
Integer no = PageUtils.parseNo(pageNo);
Integer size = PageUtils.parseSize(pageSize);
Integer offset = PageUtils.getOffset(no, size);
solrQuery.setStart(offset);
solrQuery.setRows(size);
setOrder(solrQuery, orderBy);
//执行查询并返回结果
QueryResponse resp = solrClient.query(solrQuery);
SolrDocumentList results = resp.getResults();
//获取查询到的数据总量
long numFound = results.getNumFound();
if(numFound <= 0) {
return map;
}else {
map.put("total", numFound);
map.put("rows", convert(results));
return map;
}
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
return map;
}
}
/**
* 设置排序方式
*
* @param solrQuery SolrQuery
* @param orderBy 排序字段 example:name desc
*/
private void setOrder(SolrQuery solrQuery, String orderBy) {
if(VerifyUtils.isEmpty(orderBy)) {
return;
}
String[] split = orderBy.split(SPACE);
if("asc".equals(split[1].toLowerCase())) {
solrQuery.setSort(split[0], ORDER.asc);
}else {
solrQuery.setSort(split[0], ORDER.desc);
}
}
其中SolrQuery实体为Solr的查询实体,其调用方法
set( String name, String ... val ):设置查询参数,name可以使用org.apache.solr.common.params.CommonParams类调用,具体参数与上一节 Solr专题(二)详解Solr查询参数 一致。
下节主要讲解solr在项目中的安全设置。
Solr专题(三)SSM项目整合Solr的更多相关文章
- SSM项目整合第一步 注册登陆实现
SSM项目整合第一步 注册: 项目目录: 一.数据库建表: 源码: ; -- ---------------------------- -- Table structure for t_user - ...
- SSM项目整合基本步骤
SSM项目整合 1.基本概念 1.1.Spring Spring 是一个开源框架, Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作 ...
- SSM项目整合Quartz
一.背景 SSM项目中要用到定时器,初期使用Timer,后来用spring 的schedule,都比较简单,所以功能比较单一而且他们不能动态的配置时间.后来就研究quartz,准备整合到项目中.Qua ...
- SSM项目整合纪实
一 前 言 本来是为了探究一些功能性问题,需要一套完整的项目架构,本以为SSM用过那么多了,轻松搭建不在话下,但是过程中还是遇到一些问题,踩到一些未曾料想的坑.博文以搭建极简架构为目的,附带一些关键阐 ...
- SSM 项目整合
SSM整合:spring + springmvc + mybatis 1.1 生成Maven项目:ar_ssm 1.2 添加jar包 <dependencies> <!-- 单元测试 ...
- 【solr专题之中的一个】Solr高速入门
一.Solr学习相关资料 1.官方材料 (1)高速入门:http://lucene.apache.org/solr/4_9_0/tutorial.html.以自带的example项目高速介绍发Solr ...
- ssm项目整合shiro
pom.xml <properties> <shiro.version>1.2.2</shiro.version> </properties> < ...
- SpringMVC详解及SSM框架整合项目
SpringMVC ssm : mybatis + Spring + SpringMVC MVC三层架构 JavaSE:认真学习,老师带,入门快 JavaWeb:认真学习,老师带,入门快 SSM框架: ...
- 使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化
一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...
随机推荐
- 2020-07-28:已知sqrt (2)约等于 1.414,要求不用数学库,求sqrt (2)精确到小数点后 10 位。
福哥答案2020-07-28: 1.二分法.2.手算法.3.牛顿迭代法.基础是泰勒级数展开法.4.泰勒级数法.5.平方根倒数速算法,卡马克反转.基础是牛顿迭代法. golang代码如下: packag ...
- C#LeetCode刷题之#706-设计哈希映射(Design HashMap)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4116 访问. 不使用任何内建的哈希表库设计一个哈希映射 具体地说 ...
- 【译】gRPC-Web for .NET now available
.NET 的 gRPC-Web 现在正式发布了.我们在一月份发布了实验版,从那时起,我们就根据早期的用户反馈进行着改进. 有了这个版本,gRPC-Web 就变成了 grpc-dotnet 项目的一个完 ...
- matlab使用libsvm入门教程——使用matlab安装配置libsvm以及一个svm分类实例
前言 此教程专注于刚入门的小白, 且博客拥有时效性, 发布于2019年3月份, 可能后面的读者会发现一些问题, 欢迎底下评论出现的问题,我将尽可能更新解决方案. 我开始也在如何安装libsvm上出现了 ...
- python基本数据类型(二)
列表 list 1.list.append( p_object) ---- 增加列表参数(向后追加) list=['lifei','liuhua','laochai'] list.append( ...
- 数据库之Oracle优化技巧(二)
1.通过内部函数提高 SQL 效率 复杂的 SQL 往往牺牲了执行效率. 能够掌握上面的运用函数解决问题的方法在实际 工作中是非常有意义的 . 2.使用表的别名(Alias) 当在 SQL 语句中连接 ...
- 【FJOI2007】轮状病毒 - Matrix-Tree定理
题目描述 轮状病毒有很多变种.许多轮状病毒都是由一个轮状基产生.一个n轮状基由圆环上n个不同的基原子和圆心的一个核原子构成.2个原子之间的边表示这2个原子之间的信息通道,如下图所示. n轮状病毒的产生 ...
- golang container/list 使用
原文链接:http://cngolib.com/container-list.html(中文),https://golang.org/pkg/container/list/(英文) 示例: packa ...
- cinder migrate基础内容-1
一.卷迁移rest api接口 POST /v2/{project_id}/volumes/{volume_id}/action 迁移一个卷到特定的主机,在请求体中指定 os-migrate_volu ...
- 偏序 分块+bitset
题目描述 给定一个有\(n\)个元素的序列,元素编号为\([1,n]\),每个元素有\(k\)个属性\(p_1,p_2,p_3,...,p_k\) ,求序列中满足 \(i<j\)且 \(1 \l ...