我与solr(四)--solrJ
SolrJ索引库:
solr提供的一个客户端操作框架,在文件/solr6.2/dist下面可以找到该jar包solrj.jar以及相关jar包,可以使用maven添加。

java使用solrJ如下:
@Service
public class IntelligenceWordSolrDAOImpl implements IntelligenceWordSolrDAO { private static final String URL = Config.getString("config.solr.url.mycore"); /**
* 获取solrService对象
*
* @return
*/
private SolrClient getSolrService() { String urlString = "http://192.168.1.12:8080/solr/mycore";
SolrClient solr = new HttpSolrClient.Builder(urlString).build(); return solr;
} /**
* 在搜索器引擎中创建索引
*
* @param intelligenceList
*/
public void add(List<Intelligence> intelligenceList) throws Exception { SolrClient solr = getSolrService(); List<SolrInputDocument> SolrInputDocumentList = Lists.newArrayList();
intelligenceList.forEach(intelligence -> SolrInputDocumentList.add(initProperty(intelligence))); solr.add(SolrInputDocumentList);
solr.commit();
} /**
* 查询数据
*
* @param param 匹配的参数集合
* @return 文档的数量
* @throws Exception
*/
public Long query(String[] param, Integer limit) throws Exception { Integer branchId = LoginContext.getBranchId();
SolrClient solr = getSolrService();
SolrQuery query = new SolrQuery(); StringBuffer buffer = new StringBuffer();
for (int i = 0; i < param.length; i++) {
if (i + 1 == param.length) {
buffer.append("\"" + param[i] + "\"");
} else {
buffer.append("\"" + param[i] + "\"" + " OR ");
}
} //根据时间限制设置选定条件
DateTime dateTime = new DateTime();
dateTime.minusDays(limit);
Date queryTime = dateTime.toDate(); String queryStr = "text:(" + buffer.toString() + ")";
query.add(queryStr); //时间限定
String limitStr = "collectTime:[" + queryTime + " TO *]";
String branchStr = "branchId:("+branchId+")";
query.add(limitStr);
query.add(branchStr); // String allQuery = queryStr+" AND "+limitStr+" AND "+branchStr; //query.setQuery(allQuery); QueryResponse response = solr.query(query); //获取返回的数据
SolrDocumentList solrDocumentList = response.getResults();
return solrDocumentList.getNumFound();
} /**
* 初始化
*
* @param param
* @return
*/
public SolrInputDocument initProperty(Intelligence param) { Assert.notNull(param, "param not be null");
SolrInputDocument document = new SolrInputDocument();
document.addField("id", param.getIntelligenceId());
document.addField("intelligenceId", param.getIntelligenceId());
document.addField("title", param.getTitle());
document.addField("content", param.getContent());
document.addField("collectTime", param.getCollectTime().getTime());
document.addField("branchId", param.getBranchId()); return document;
} }
我与solr(四)--solrJ的更多相关文章
- Solr系列四:Solr(solrj 、索引API 、 结构化数据导入)
一.SolrJ介绍 1. SolrJ是什么? Solr提供的用于JAVA应用中访问solr服务API的客户端jar.在我们的应用中引入solrj: <dependency> <gro ...
- org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException: Internal Server Error 错误
Solr报错: { "responseHeader": { "status": 500, "QTime": 11 }, "erro ...
- Solr 14 - SolrJ操作SolrCloud集群 (Solr的Java API)
目录 1 pom.xml文件的配置 2 SolrJ操作SolrCloud 1 pom.xml文件的配置 项目的pom.xml依赖信息请参照: Solr 09 - SolrJ操作Solr单机服务 (So ...
- solr(四) : springboot 整合 solr
前言: solr服务器搭起来, 数据导入之后, 就该应用到项目中去了. 那在项目中, 该怎么整合和应用solr呢? 接下来, 就来整合和应用solr 一. 整合 1. 引入jar包 <prope ...
- Solr(四)Solr实现简单的类似百度搜索高亮功能-1.配置Ik分词器
配置Ik分词器 一 效果图 二 实现此功能需要添加分词器,在这里使用比较主流的IK分词器. 1 没有配置IK分词器,用solr自带的text分词它会把一句话分成单个的字. 2 配置IK分词器,的话它会 ...
- Solr 09 - SolrJ操作Solr单机服务 (Solr的Java API)
目录 1 SolrJ是什么 2 SolrJ对索引的CRUD操作 2.1 创建Maven工程(打包方式选择为jar) 2.2 配置pom.xml文件, 加入SolrJ的依赖 2.3 添加和修改索引 2. ...
- Java操作Solr之SolrJ
添加SolrJ的jar包 solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务, <depende ...
- solr学习篇(四) java使用solr简单查询(初识solrj)
使用java实现solr查询 目录:1:导入jar包 2:核心类介绍 3:代码实现 4:注意事项 一 导入jar包 solrj可以使Java应用程序很方便的访问与操作solr. solrj有几个核心类 ...
- Solr JAVA客户端SolrJ 4.9使用示例教程
http://my.oschina.net/cloudcoder/blog/305024 简介 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询Solr索引的JAVA接口.So ...
随机推荐
- 循序渐进Python3(十一) --6-- Ajax 实现跨域请求 jsonp 和 cors
Ajax操作如何实现跨域请求? Ajax (XMLHttpRequest)请求受到同源策略的限制. Ajax通过XMLHttpRequest能够与远程的服务器进行信息交互,另外 ...
- Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号
www.cnblogs.com/zhangzhu/archive/2013/08/22/3274831.html 如何开启MySQL的远程帐号-1)首先以 root 帐户登陆 MySQL 在 Wind ...
- Android(Intent 学习)
Intent 是一个消息传递对象,Intent可以通过多种方式促进组件之间的通信,基本的三种用例: 启动Acitivity: Activity表示应用中的一个屏幕,通过将Intent传递给startA ...
- PL/SQL EO 设计与开发
1.INSERT 调用PL/SQL 去insert的时候,没有使用super(),此时应当自己创建callable statement: 调用checkErrors()方法在执行 callable s ...
- android虚拟机
参考:http://baike.baidu.com/link?url=06bC3y5DSQ7DQ_QbEr6hTfMNpmg2f-39w6FpU69xxkbNoJ5OR4N9xCKoMwMMGTZfF ...
- Integer Break
Given a positive integer n, break it into the sum of at least two positive integers and maximize the ...
- 转-servlet 获取 post body 体用流读取为空的问题
目前基于rest风格的很多API开始使用通过body data来传输来代替之前的key-value传输方式.在Java servlet或者springmvc中可以通过如下代码来获取并图片通过流方式传输 ...
- CSS3转换
一.2D转换 1.css3 rotate()旋转 通过指定的角度参数对原元素指定一个2D rotation(2D 旋转) 语法: transform:rotate(<angle>); ...
- linux中用户、组的管理(密码管理、权限管理及其修改用户、组)(转)
process(进程) 1 计算资源 权限 用户(获取资源或服务的凭证或标识) 用户,容器,关联权限:用户组(标识符),方便地指派权限 2 用户.组.权限 安全上下文(secure context ...
- 如何:对 Windows 窗体控件进行线程安全调用
http://msdn.microsoft.com/zh-cn/library/ms171728(VS.90).aspx http://msdn.microsoft.com/zh-cn/library ...