solrj-solr Guide 4.7
solrj是一个很容易使java应用程序和solr进行交互的一个API,solrj隐藏了很多连接Solr的细节,允许你的应用程序使用简单的高级方法和solr互动交流.
solrj的核心就是 org.apache.solr.client.solrj包,下面包含了5个主要类.通过创建一个SolrServer开始,这个SolrServer就是你索要使用的solr实例,然后发出SolrRequests或者是SolrQuerys,最后返回SolrResponses.
SolrServer是一个抽象类,所以为了连接远程主机的Solr实例,一般创建一个HttpSolrServer实例.这个实例主要用于通过http和Solr服务进行交互.
String urlString = "http://localhost:8983/solr";
SolrServer solr = new HttpSolrServer(urlString);
创建一个SolrServer并不会使网络连接,当你在执行查询或者是其他操作时,才会连接网络,如果URL字符串不正确的话,会抛出一个MalformedURLException异常.
一旦创建完SolrServer之后,就可以调用query(),add(),method()的方法.
构建和运行SolrJ应用程序
1. 添加to be in the classpath. solr-solrj-4.x.x.jar类.
2.dist/solrj-lib下的类库需要加载.
3.使用Maven的话,在pom.xml中添加:
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>4.x.0</version>
</dependency>
如果担心solrJ扩展了客户端应用程序的大小,可以使用一个代码模糊处理工具像 ProGuard来删除你不使用的API.
设置XMLResponseParser
solrj使用的是二进制格式,而不是xml格式作为它的默认格式.较早版本的solr的用户通过设置解析器XMLResponseParser来使用XML格式操作.
server.setParser(new XMLResponseParser());
执行查询
使用query()方法获取solr的搜索结果.你需要传递一个描述查询信息的SolrQuery对象,然后返回一个QueryResponse对象.
SolrQuery有很多方法,很容易的添加参数用于选择请求处理器(handler),并且发送参数给handler.这里是一个很简单的例子,使用默认
请求处理器,设置q参数:
SolrQuery parameters = new SolrQuery();
parameters.set("q", mQueryString);
选择不同的请求处理器,只需要设置qt参数:
parameters.set("qt", "/spellCheckCompRH");
一旦设置完成SolrQuery,使用query()来提交:
QueryResponse response = solr.query(parameters);
这个客户端生成了一个网络连接,并发送了query查询信息,solr处理这个查询信息,然后response响应,并返回一个QueryResponse.
QueryResponse就是一个满足查询参数的文档结果集合.可以通过getResults()方法直接得到检索结果文档,也可以调用其他方法来获取高亮和分面的信息.
SolrDocumentList list = response.getResults();
索引文档
其他的操作也很简单,对于索引文档来说,你只需要创建一个SolrInputDocument对象,并通过SolrServer的add()方法传递数据,然后调用
commit()方法即可.
String urlString = "http://localhost:8983/solr";
SolrServer solr = new HttpSolrServer(urlString);
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "552199");
document.addField("name", "Gouda cheese wheel");
document.addField("price", "49.99");
UpdateResponse response = solr.add(document);
// Remember to commit your changes!
solr.commit();
用XML或者二进制格式上传内容(content)
SolrJ允许您在XML和二进制格式上传内容而不是默认的XML格式.solrj可以使用以下使用二进制格式上传,同样采用相同的格式获取结果.
server.setRequestWriter(new BinaryRequestWriter());
使用ConcurrentUpdateSolrServer
当实现Java应用程序时,这将会一次性加载大量的文档,ConcurrentUpdateSolrServer 是一个HttpSolrServer的替代类,ConcurrentUpdateSolrServer使用Buffer缓冲添加所有的文档,并将其写入到开放HttpSolrServer中.这个类是线程安全的,虽然任意的SolrServer请求都能使用这个实现来完成,但是只推荐使用ConcurrrentUpdateSolrServer做/update请求.
EmbeddedSolrServer
这种嵌入方式在大多数情况下都是不推荐使用的,并且它支持相当有限的solr功能,尤其是不能在SolrCloud或者Index Replication.EmbeddedSolrServer的存在主要是帮助更容易的测试.
对于EmbeddedSolrServer的使用,可以参考Solrj的Junit单元测试,org.apache.solr.client.solrj.embedded包.
相关主题
索引和基本数据操作(待发布)
本节内容翻译自:Apache Solr Reference Guide 4.7,不当之处,请指正! 谢谢.
solrj-solr Guide 4.7的更多相关文章
- Solr系列四:Solr(solrj 、索引API 、 结构化数据导入)
一.SolrJ介绍 1. SolrJ是什么? Solr提供的用于JAVA应用中访问solr服务API的客户端jar.在我们的应用中引入solrj: <dependency> <gro ...
- Solr JAVA客户端SolrJ 4.9使用示例教程
http://my.oschina.net/cloudcoder/blog/305024 简介 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询Solr索引的JAVA接口.So ...
- 使用solrj操作solr索引库,solr是lucene服务器
客户端开发 Solrj 客户端开发 Solrj Solr是搭建好的lucene服务器 当然不可能完全满足一般的业务需求 可能 要针对各种的架构和业务调整 这里就需要用到Solrj了 Solrj是Sol ...
- 【Solr专题之九】SolrJ教程
一.SolrJ基础 1.相关资料 API:http://lucene.apache.org/solr/4_9_0/solr-solrj/ apache_solr_ref_guide_4.9.pdf:C ...
- 【Solr专题之九】SolrJ教程 分类: H4_SOLR/LUCENCE 2014-07-28 14:31 2351人阅读 评论(0) 收藏
一.SolrJ基础 1.相关资料 API:http://lucene.apache.org/solr/4_9_0/solr-solrj/ apache_solr_ref_guide_4.9.pdf:C ...
- Solr+Tomcat+zookeeper部署实战
一 .安装solr 环境说明:centos 7.3,solr 6.6,zookeeper3.4,Tomcat8.5,jdk1.8 zookeeper的部署请参考:http://www.cnblogs. ...
- 全文搜索引擎——Solr
1.部署solr a.下载并解压Solr b.导入项目(独立项目): 将解压后的 server\solr-webapp 下的 webapp文件夹 拷贝到tomcat的webapps下,并重命名为 so ...
- Solr7.4.0的API(Solrj)操作及项目中的使用
一.SolrJ的概念 solr单机版服务搭建:https://www.cnblogs.com/frankdeng/p/9615253.html solr集群版服务搭建:https://www.cnbl ...
- Solr7.4.0的API(Solrj)操作
一.SolrJ的概念 solr单机版服务搭建:https://www.cnblogs.com/frankdeng/p/9615253.html solr集群版服务搭建:https://www.cnbl ...
- solr 高亮显示
官网:https://lucene.apache.org/solr/guide/6_6/highlighting.html#Highlighting-TheUnifiedHighlighter 前言 ...
随机推荐
- CodeForces 711B Chris and Magic Square (暴力,水题)
题意:给定n*n个矩阵,其中只有一个格子是0,让你填上一个数,使得所有的行列的对角线的和都相等. 析:首先n为1,就随便填,然后就是除了0这一行或者这一列,那么一定有其他的行列是完整的,所以,先把其他 ...
- js 设置回车事件
document.onkeydown=function(event){ var e = event || window.event || arguments.callee.caller.argumen ...
- Win8制作和使用恢复盘
制作和使用恢复盘要制作恢复盘,请执行以下操作:注:确保计算机连接到交流电源.1. 将指针移至屏幕的右上角或右下角以显示超级按钮,然后单击搜索.2. 根据操作系统的不同,执行以下某项操作:• 在 Win ...
- sublime text 3 licence code
Update:2016年3月9日09:14:12 可用 —– BEGIN LICENSE —–Michael BarnesSingle User LicenseEA7E-8213858A353C41 ...
- iOS 在任意界面 Dismiss Keyboard
最近由于项目需要,有些时候我们需要在任意时刻dismiss掉键盘. 很自然的我们会想到键盘通知 UIKeyboardDidShowNotification和UIKeyboardDidHideNotif ...
- HDU 4637 Rain on your Fat brother 线段与半圆和线段交 简单题
题意: 应该不难读懂. 做法: 我们可以把雨滴看做静止不动,然后maze(这题的那个人)就是往左上方运动就可以了,计算出maze能跑到的最远的点,然后就是求起点和终点所构成的线段与每个雨滴交的时间,注 ...
- js页面文字选中后分享到新浪微博实现
demo您可以狠狠地点击这里:js文字选中分享到新浪微博demo 方法与代码 选中即分享的功能看上去比较高级,其实实现是相当简单的.其中的会让人头大,一般人也不感兴趣的原理这里就直接跳过.这个js文字 ...
- 第七届ACM趣味程序设计竞赛第四场(正式赛) 题解
Final Pan's prime numbers 题目连接: http://acm.uestc.edu.cn/#/problem/show/1272 题意 给你n,要求你在[4,n]范围内找到一个最 ...
- (字符串的处理4.7.16)POJ 1159 Palindrome(让一个字符串变成回文串需要插入多少个字符...先逆序,在减去公共子序列的最大长度即可)
/* * POJ_1159.cpp * * Created on: 2013年10月29日 * Author: Administrator */ #include <iostream> # ...
- kickstart一键自动安装Linux系统
kickstart,无人值守,自动安装系统.本文介绍kickstart的用法. #安装系统的信息——可以参考 [root@larrywen pdf]# vim ~/anaconda-ks.cfg 第一 ...