以下内容译自Solr Wiki官方文档,版权没有,随意转载.

Solrj 是一个访问solr的Java客户端。它提供了一个java接口用于添加更新和查询solr索引。本页面介绍SolrJ最新版本1.4在Solr 1.4.x及其在附带war包中的使用,关于SolrJ在Solr1.3和Solr1.2的使用教程请移步Solrj1.3 Wiki

SolrJ/Solr版本交叉的兼容性说明

SolrJ通常保持向后兼容性,因此你可以在较老版本的Solr上使用较新版本的SolrJ,或者在较新版本的Solr上使用较老版本的SolrJ。但是有些细微的区别需要注意:

如果你混合使用1.x和较新的主版本,必须设置响应XML解析器,因为两个版本使用了不兼容的Java bin。

server.setParser(new XMLResponseParser());

只要不将发起请求改变成二进制流,混合使用3.x和4.x或者混合之后的版本,通常没有太大问题(在SOLR-3038中有关于将默认请求改为二进制流的讨论)。如果这样做,3.x和更高版本的兼容性问题需要通过发起一个明确描述XML的版本的请求来决定。在SOLR-4820中有关于自动传输检测这种行为的讨论。

Java bin的格式是个例外,它在各个大版本之间互不兼容。不能使用javabin在1.4.1和以上版本或者3.1和更高版本之间通信(因为在协议中改变了字符编码)。也不能采用java bin的方式用于4.x的客户端和包括3.x在内之前版本的服务端进行通信,因为这样的改变会妨碍服务url的映射,也违反了向后不兼容的协议。在这种情况下,仅仅是不提供SolrServer的请求写入流,仍然可以得到默认的(XML)线性格式。

如果使用较老版本的SolrJ和4.x或者更新的Solr服务,很大可能是因为想从4.0的SolrJ中得到在之前的老版本的SolrQuery对象中所没有的setRequestHandler方法。值得注意的是,这个方法尤为重要当SolrJ比Solr要更新的时候。

设置Classpath

SolrJ用到的jar包分布在以下几个文件夹:/dist、/dist/solrj-lib 和 /lib,使用SolrJ最小可用jar包集合(可根据使用场景获取更多依赖)清单如下:

/dist文件夹

  • apache-solr-solrj-*.jar

/dist/solrj-lib文件夹

  • commons-codec-1.3.jar
  • commons-httpclient-3.1.jar
  • commons-io-1.4.jar
  • jcl-over-slf4j-1.5.5.jar
  • slf4j-api-1.5.5.jar

/lib文件夹

  • slf4j-jdk14-1.5.5.jar

Maven

SolrJ可以从官方Maven库中获得,在pom.xml中添加如下依赖即可使用SolrJ相关API:

<dependency>
<artifactId>solr-solrj</artifactId>
<groupId>org.apache.solr</groupId>
<version>1.4.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>

如果需要使用EmbeddedSolrServer模式,同时需要添加Solr Core的依赖:

<dependency>
<artifactId>solr-core</artifactId>
<groupId>org.apache.solr</groupId>
<version>1.4.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>

另外,使用EmbeddedSolrServer时需要注意SolrJ依赖Servlet API,通常Servlet API已经作为Web项目的基础依赖包含在项目中,但即时是命令行项目,同样需要包含Servlet API依赖:

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>

如果程序中抛出NoClassDefFoundError异常,则可能需要如下依赖:

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.5.6</version>
</dependency>

如果使用Solr-SolrJ 1.4.1和Slf4j-simple 1.5.6,可能会由于slf4j-api的改变引起IllegalAccessError,SolrJ建议使用slf4j-api 1.5.5和slf4j-simple 1.5.5或者其他的适当版本。

HttpSolrServer

SolrJ API 官方文档最佳实践的更多相关文章

  1. 【Android API】Android 4.1 API官方文档详解

    原文:http://android.eoe.cn/topic/summary 翻译:[eoeAndroid原创团队]kris.流风而逝.贼寇在何方.snowxwyo.lsy4833406 更新日期:2 ...

  2. 《Spark Python API 官方文档中文版》 之 pyspark.sql (一)

    摘要:在Spark开发中,由于需要用Python实现,发现API与Scala的略有不同,而Python API的中文资料相对很少.每次去查英文版API的说明相对比较慢,还是中文版比较容易get到所需, ...

  3. 《Spark Python API 官方文档中文版》 之 pyspark.sql (二)

    摘要:在Spark开发中,由于需要用Python实现,发现API与Scala的略有不同,而Python API的中文资料相对很少.每次去查英文版API的说明相对比较慢,还是中文版比较容易get到所需, ...

  4. 《Spark Python API 官方文档中文版》 之 pyspark.sql (四)

    摘要:在Spark开发中,由于需要用Python实现,发现API与Scala的略有不同,而Python API的中文资料相对很少.每次去查英文版API的说明相对比较慢,还是中文版比较容易get到所需, ...

  5. 《Spark Python API 官方文档中文版》 之 pyspark.sql (三)

    摘要:在Spark开发中,由于需要用Python实现,发现API与Scala的略有不同,而Python API的中文资料相对很少.每次去查英文版API的说明相对比较慢,还是中文版比较容易get到所需, ...

  6. Restful API官方文档

    理解Restful架构:http://www.ruanyifeng.com/blog/2011/09/restful RESTful设计指南:http://www.ruanyifeng.com/blo ...

  7. Search API 官方文档 可以用了查看自己的app

    Search API October 24, 2012 - HTTPS is now supported for Search and Lookup requests. Please update y ...

  8. ElasticSearch(6.2.2)的java API官方文档的总结 (三)

    一 : SearchRequest用于任何与搜索文档,聚合和建议有关的操作,并且还提供了对生成的文档进行高亮显示的方法. 在最基本的形式中,我们可以向请求添加一个查询:    1:添加一个Search ...

  9. lua api 官方文档 函数后面的方括号 说明 [-0, +0, –]

    本博客注有“转”字样的为转载文章,其余为本人原创文章,转载请务必注明出处或保存此段.c++/lua/windows逆向交流群:69148232 每一个lua api 函数结尾都给出了这样的说明例如: ...

随机推荐

  1. MT【127】点对个数两题之一【图论】

    在平面上有\(n\) 个点$S={x_1,x_2\cdots,x_n}, $ 其中任意两个点之间的距离至少为 \(1\), 证明在这 \(n\) 个点中距离为 \(1\)的点对数不超过 \(3n\). ...

  2. Ubuntu实用软件安装[转]

    Gedit编辑器配置 Ubuntu14.04从安装软件到卸载软件,删除安装包 linux wget 命令用法详解(附实例说明) ==================================== ...

  3. 【BZOJ4035】数组游戏(博弈论)

    [BZOJ4035]数组游戏(博弈论) 题面 BZOJ 洛谷 题解 很明显是一个翻硬币游戏的变形,因此当前局面的\(SG\)函数值就是所有白格子单独存在的\(SG\)函数的异或和. 那么,对于每一个位 ...

  4. BZOJ1150:[APIO/CTSC2007]数据备份——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=1150 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的 ...

  5. 【bzoj3573】 Hnoi2014—米特运输

    http://www.lydsy.com/JudgeOnline/problem.php?id=3573 (题目链接) 题意 题意是这道题最大的难点→_→ Solution 沙茶树形dp,考虑一定会存 ...

  6. Monitor WMIExportsToC++Use DiskCleanup bypass UAC

    作者:嘶吼吼链接:https://zhuanlan.zhihu.com/p/23473665来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. About: Use odb ...

  7. 解题:POI 2006 PRO-Professor Szu

    题面 这个题是比较套路的做法啦,建反图后缩点+拓扑排序嘛,对于所有处在$size>=2$的SCC中的点都是无限解(可以一直绕) 然后注意统计的时候的小细节,因为无限解/大解也要输出,所以我们把这 ...

  8. Codeforces Round #290 (Div. 2) 拓扑排序

    C. Fox And Names time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  9. Git2:Git基本操作

    目录 一.git全局配置 二.创建一个版本库 三.git的常用操作 1.版本提交与回退 1.1.版本提交 1.2.版本回退 2.工作区.版本库与暂存区 2.1.工作区 2.2.版本库 3.管理文件的修 ...

  10. Kubernetes 1.5集成heapster

    Heapster是kubernetes集群监控工具.在1.2的时候,kubernetes的监控需要在node节点上运行cAdvisor作为agent收集本机和容器的资源数据,包括cpu.内存.网络.文 ...