一、环境配置

所需要的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的更多相关文章

  1. SSM项目整合第一步 注册登陆实现

    SSM项目整合第一步  注册: 项目目录: 一.数据库建表: 源码: ; -- ---------------------------- -- Table structure for t_user - ...

  2. SSM项目整合基本步骤

    SSM项目整合 1.基本概念 1.1.Spring Spring 是一个开源框架, Spring 是于 2003  年兴起的一个轻量级的 Java  开发框架,由 Rod Johnson  在其著作  ...

  3. SSM项目整合Quartz

    一.背景 SSM项目中要用到定时器,初期使用Timer,后来用spring 的schedule,都比较简单,所以功能比较单一而且他们不能动态的配置时间.后来就研究quartz,准备整合到项目中.Qua ...

  4. SSM项目整合纪实

    一 前 言 本来是为了探究一些功能性问题,需要一套完整的项目架构,本以为SSM用过那么多了,轻松搭建不在话下,但是过程中还是遇到一些问题,踩到一些未曾料想的坑.博文以搭建极简架构为目的,附带一些关键阐 ...

  5. SSM 项目整合

    SSM整合:spring + springmvc + mybatis 1.1 生成Maven项目:ar_ssm 1.2 添加jar包 <dependencies> <!-- 单元测试 ...

  6. 【solr专题之中的一个】Solr高速入门

    一.Solr学习相关资料 1.官方材料 (1)高速入门:http://lucene.apache.org/solr/4_9_0/tutorial.html.以自带的example项目高速介绍发Solr ...

  7. ssm项目整合shiro

    pom.xml <properties> <shiro.version>1.2.2</shiro.version> </properties> < ...

  8. SpringMVC详解及SSM框架整合项目

    SpringMVC ssm : mybatis + Spring + SpringMVC MVC三层架构 JavaSE:认真学习,老师带,入门快 JavaWeb:认真学习,老师带,入门快 SSM框架: ...

  9. 使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化

    一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...

随机推荐

  1. rocketMq安装及集群配置

    网上关于rocketMq安装.集群配置的文章有很多,作为一个初学者,跟着网上的各种教程安装遇到了各种坑,可谓是一路坎坷.本文记录下rocketMq安装的完整过程.希望对你有一点帮助 安装rocketM ...

  2. HTML实例-01-轮播图

     body部分 <div class="outer"> <ul class="img-list"> <li><a hr ...

  3. 看完就能掌握的PHP核心技术 - ​​​​​​​​面向对象

    继承和多态 类的组合与继承 假设我们有两个类,一个 person,另外一个是 family:在 family 类中我们创建 person 类中的对象,并且我们把这个对象视为 family 类的一个属性 ...

  4. vue.extend和vue.component的区别

    vue.extend 使用基础 Vue 构造器函数,通过原型继承,(返回)创建一个"子类"(构造器).参数是一个包含组件选项的对象. const Sub = function Vu ...

  5. HashMap 21问!!

    1:HashMap的数据结构? A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点.当链表长度超过8时,链表转换为红黑树. transient Node<K,V>\[\] t ...

  6. dispatch_next()方法的实现

    之前的文章介绍到,在generate_normal_entry()函数中会调用generate_fixed_frame()函数为Java方法的执行生成对应的栈帧,接下来还会调用dispatch_nex ...

  7. tar.gz文件的压缩与解压

    1 解压".xz" xz -d your_file_name.tar.xz 注:运行上述命令后your_file_name.tar.xz会被删除 2 解包".tar&qu ...

  8. 2.Oracle数据库安装教程

    一.准备安装 基本都是按部就班. 使用的OS版本:OEL4 安装程序路径: /mnt/Oracle11g_linux_x86_64/database 创建用户 使用的.bash_profile 修改的 ...

  9. python自动化测试中的数据驱动unittest+ddt

    ddt是一个unittest的插件,用来实现uniitest的数据驱动 本文以python自动化测试中的数据驱动为原则,记录学习ddt的过程 一.数据的传递规则

  10. Mac上如果看不到.git目录的解决方法

    Mac OS X上,如果需要查看.git目录下的隐藏文件,操作很简单: 做法是:打开一个Terminal终端窗口,输入: defaults write com.apple.finder AppleSh ...