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

  1. Solr系列四:Solr(solrj 、索引API 、 结构化数据导入)

    一.SolrJ介绍 1. SolrJ是什么? Solr提供的用于JAVA应用中访问solr服务API的客户端jar.在我们的应用中引入solrj: <dependency> <gro ...

  2. org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException: Internal Server Error 错误

    Solr报错: { "responseHeader": { "status": 500, "QTime": 11 }, "erro ...

  3. Solr 14 - SolrJ操作SolrCloud集群 (Solr的Java API)

    目录 1 pom.xml文件的配置 2 SolrJ操作SolrCloud 1 pom.xml文件的配置 项目的pom.xml依赖信息请参照: Solr 09 - SolrJ操作Solr单机服务 (So ...

  4. solr(四) : springboot 整合 solr

    前言: solr服务器搭起来, 数据导入之后, 就该应用到项目中去了. 那在项目中, 该怎么整合和应用solr呢? 接下来, 就来整合和应用solr 一. 整合 1. 引入jar包 <prope ...

  5. Solr(四)Solr实现简单的类似百度搜索高亮功能-1.配置Ik分词器

    配置Ik分词器 一 效果图 二 实现此功能需要添加分词器,在这里使用比较主流的IK分词器. 1 没有配置IK分词器,用solr自带的text分词它会把一句话分成单个的字. 2 配置IK分词器,的话它会 ...

  6. Solr 09 - SolrJ操作Solr单机服务 (Solr的Java API)

    目录 1 SolrJ是什么 2 SolrJ对索引的CRUD操作 2.1 创建Maven工程(打包方式选择为jar) 2.2 配置pom.xml文件, 加入SolrJ的依赖 2.3 添加和修改索引 2. ...

  7. Java操作Solr之SolrJ

    添加SolrJ的jar包 solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务, <depende ...

  8. solr学习篇(四) java使用solr简单查询(初识solrj)

    使用java实现solr查询 目录:1:导入jar包 2:核心类介绍 3:代码实现 4:注意事项 一 导入jar包 solrj可以使Java应用程序很方便的访问与操作solr. solrj有几个核心类 ...

  9. Solr JAVA客户端SolrJ 4.9使用示例教程

    http://my.oschina.net/cloudcoder/blog/305024 简介 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询Solr索引的JAVA接口.So ...

随机推荐

  1. machine learning 笔记 normal equation

    theta=(Xt*X)^-1 Xt*y x is feature matrix y is expectation

  2. iOS开发app启动原理及视图和控制器的函数调用顺序

    main()函数是整个程序的入口,在程序启动之前,系统会调用exec()函数.在Unix中exec和system的不同在于,system是用shell来调用程序,相当于fork+exec+waitpi ...

  3. sqlserver存取过程游标

    ALTER proc [dbo].[common_proc_temp2] as begin declare @id varchar(50); declare @cbcontractid varchar ...

  4. linux命令(4):mkdir命令

    linux mkdir 命令 用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. 1.命令格式: mkdir [选项] 目录... 2.命 ...

  5. 简单的html和css

    整体图太大了,看不太清楚,下面是分开的图 第一张: 第二张:

  6. WIN32_LEAN_AND_MEAN宏

    网上说: 不加载MFC所需的模块. 用英语解释:Say no to MFC 如果你的工程不使用MFC,就加上这句,这样一来在编译链接时,包括最后生成的一些供调试用的模块时,速度更快,容量更小. 我们经 ...

  7. .Net判断一个对象是否为数值类型探讨总结(高营养含量,含最终代码及跑分)

    前一篇发出来后引发了积极的探讨,起到了抛砖引玉效果,感谢大家参与. 吐槽一下:这个问题比其看起来要难得多得多啊. 大家的讨论最终还是没有一个完全正确的答案,不过我根据讨论结果总结了一个差不多算是最终版 ...

  8. PHP正则表达式 /i, /is, /s, /isU等

    PHP正则表达式 /i, /is, /s, /isU等 都是些什么东西呢? i 匹配大小写 s 模式中的圆点元字符(.)匹配所有的字符,包括换行符 x 模式中的空白字符除了被转义的或在字符类中的以外完 ...

  9. Ceph剖析:线程池实现

    线程池ThreadPool的实现符合生产者-消费者模型,这个模型解除生产者消费者间的耦合关系,生产者可以专注处理制造产品的逻辑而不用关心产品的消费,消费者亦然.当然,生产者消费者之间需要一个连接的纽带 ...

  10. 有关tp里搜索框的实现方法

    1: