SolrJ API 官方文档最佳实践
以下内容译自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 官方文档最佳实践的更多相关文章
- 【Android API】Android 4.1 API官方文档详解
原文:http://android.eoe.cn/topic/summary 翻译:[eoeAndroid原创团队]kris.流风而逝.贼寇在何方.snowxwyo.lsy4833406 更新日期:2 ...
- 《Spark Python API 官方文档中文版》 之 pyspark.sql (一)
摘要:在Spark开发中,由于需要用Python实现,发现API与Scala的略有不同,而Python API的中文资料相对很少.每次去查英文版API的说明相对比较慢,还是中文版比较容易get到所需, ...
- 《Spark Python API 官方文档中文版》 之 pyspark.sql (二)
摘要:在Spark开发中,由于需要用Python实现,发现API与Scala的略有不同,而Python API的中文资料相对很少.每次去查英文版API的说明相对比较慢,还是中文版比较容易get到所需, ...
- 《Spark Python API 官方文档中文版》 之 pyspark.sql (四)
摘要:在Spark开发中,由于需要用Python实现,发现API与Scala的略有不同,而Python API的中文资料相对很少.每次去查英文版API的说明相对比较慢,还是中文版比较容易get到所需, ...
- 《Spark Python API 官方文档中文版》 之 pyspark.sql (三)
摘要:在Spark开发中,由于需要用Python实现,发现API与Scala的略有不同,而Python API的中文资料相对很少.每次去查英文版API的说明相对比较慢,还是中文版比较容易get到所需, ...
- Restful API官方文档
理解Restful架构:http://www.ruanyifeng.com/blog/2011/09/restful RESTful设计指南:http://www.ruanyifeng.com/blo ...
- Search API 官方文档 可以用了查看自己的app
Search API October 24, 2012 - HTTPS is now supported for Search and Lookup requests. Please update y ...
- ElasticSearch(6.2.2)的java API官方文档的总结 (三)
一 : SearchRequest用于任何与搜索文档,聚合和建议有关的操作,并且还提供了对生成的文档进行高亮显示的方法. 在最基本的形式中,我们可以向请求添加一个查询: 1:添加一个Search ...
- lua api 官方文档 函数后面的方括号 说明 [-0, +0, –]
本博客注有“转”字样的为转载文章,其余为本人原创文章,转载请务必注明出处或保存此段.c++/lua/windows逆向交流群:69148232 每一个lua api 函数结尾都给出了这样的说明例如: ...
随机推荐
- Swift中使用MPMoviePlayerController实现自定义视频播放器界面
默认情况下播放器自带各种控制按钮,比如前进后退播放暂停等: var url = NSBundle.mainBundle().URLForResource("1", withExte ...
- Round 1 Over
终于把题目清单上的 \(dp\) 写完了\(hhh\)
- SSM的整合
框架的整合: 1. 依赖整合 aop的包: aspectweaver spring-aop spring核心: spring-context spring-web spring-webmvc spri ...
- 前端学习 -- Xhtml语法规范
Xhtml语法规范 HTML中不区分大小写,但是尽量使用小写: HTML的注释不能嵌套: 标签必须结构完整{要么成对出现,要么自结束标签,虽然浏览器会帮我们修正一些不符合规范的内容} 标签可以嵌套但是 ...
- Codeforces Round #290 (Div. 2) 拓扑排序
C. Fox And Names time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- bzoj 1503
1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 12311 Solved: 4399[Submit][Stat ...
- 实验三:将读取数据功能从Repository中分离
先理解下面这段话之后再开始做实验 经过实验二的改造之后,我们代码有一点结构的概念了: Listing.aspx:向Repository要Products,然后将得到的Products在页面中显示出来. ...
- python的str()字符串类型的方法详解
字符串一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串,因为内存存数据是一个挨着一个存的,如果增加一个字符串的话,之前的老位置只有一个地方,不够,这是原理性的东西,在其他语言里面也一样 7 ...
- Djang下载虚拟环境设置
下载安装 教程地址 https://docs.djangoproject.com/en/1.11/howto/windows/ 有一个步骤是创建虚拟环境 创建环境 mkvirtualenv env1 ...
- P4514 上帝造题的七分钟
P4514 上帝造题的七分钟 题意: 二维区间修改 区间查询 --- 错误日志: 写了个 4 重循环忘记调用 \(i\) Solution 二维树状数组 巨尼玛毒瘤 听说二维线段树会 \(MLE\) ...