SolrJ是操作Solr的Java客户端,它提供了增加、修改、删除、查询Solr索引的JAVA接口。SolrJ针对 Solr提供了Rest 的HTTP接口进行了封装, SolrJ底层是通过使用httpClient中的方法来完成Solr的操作。
jar包的引用(maven pom.xml):
<dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>5.3.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.7</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.3</version> </dependency>
java代码:
package entity; import java.io.IOException; import java.util.List; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; import org.apache.solr.common.SolrInputDocument; public class SolrJTest { //指定solr服务器的地址 private final static String SOLR_URL = "http://localhost:8080/solr/"; /** * 创建SolrServer对象 * * 该对象有两个可以使用,都是线程安全的 * 1、CommonsHttpSolrServer:启动web服务器使用的,通过http请求的 * 2、 EmbeddedSolrServer:内嵌式的,导入solr的jar包就可以使用了 * 3、solr 4.0之后好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为HttpSolrClient * * @return */ public HttpSolrClient createSolrServer(){ HttpSolrClient solr = null; solr = new HttpSolrClient(SOLR_URL); return solr; } /** * 往索引库添加文档 * @throws IOException * @throws SolrServerException */ public void addDoc() throws SolrServerException, IOException{ //构造一篇文档 SolrInputDocument document = new SolrInputDocument(); //往doc中添加字段,在客户端这边添加的字段必须在服务端中有过定义 document.addField("id", "8"); document.addField("name", "周新星"); document.addField("description", "一个灰常牛逼的军事家"); //获得一个solr服务端的请求,去提交 ,选择具体的某一个solr core HttpSolrClient solr = new HttpSolrClient(SOLR_URL + "my_core"); solr.add(document); solr.commit(); solr.close(); } /** * 根据id从索引库删除文档 */ public void deleteDocumentById() throws Exception { //选择具体的某一个solr core HttpSolrClient server = new HttpSolrClient(SOLR_URL+"my_core"); //删除文档 server.deleteById("8"); //删除所有的索引 //solr.deleteByQuery("*:*"); //提交修改 server.commit(); server.close(); } /** * 查询 * @throws Exception */ public void querySolr() throws Exception{ HttpSolrClient solrServer = new HttpSolrClient(SOLR_URL+"my_core/"); SolrQuery query = new SolrQuery(); //下面设置solr查询参数 //query.set("q", "*:*");// 参数q 查询所有 query.set("q","周星驰");//相关查询,比如某条数据某个字段含有周、星、驰三个字 将会查询出来 ,这个作用适用于联想查询 //参数fq, 给query增加过滤查询条件 query.addFilterQuery("id:[0 TO 9]");//id为0-4 //给query增加布尔过滤条件 //query.addFilterQuery("description:演员"); //description字段中含有“演员”两字的数据 //参数df,给query设置默认搜索域 query.set("df", "name"); //参数sort,设置返回结果的排序规则 query.setSort("id",SolrQuery.ORDER.desc); //设置分页参数 query.setStart(0); query.setRows(10);//每一页多少值 //参数hl,设置高亮 query.setHighlight(true); //设置高亮的字段 query.addHighlightField("name"); //设置高亮的样式 query.setHighlightSimplePre("<font color='red'>"); query.setHighlightSimplePost("</font>"); //获取查询结果 QueryResponse response = solrServer.query(query); //两种结果获取:得到文档集合或者实体对象 //查询得到文档的集合 SolrDocumentList solrDocumentList = response.getResults(); System.out.println("通过文档集合获取查询的结果"); System.out.println("查询结果的总数量:" + solrDocumentList.getNumFound()); //遍历列表 for (SolrDocument doc : solrDocumentList) { System.out.println("id:"+doc.get("id")+" name:"+doc.get("name")+" description:"+doc.get("description")); } //得到实体对象 List<Person> tmpLists = response.getBeans(Person.class); if(tmpLists!=null && tmpLists.size()>0){ System.out.println("通过文档集合获取查询的结果"); for(Person per:tmpLists){ System.out.println("id:"+per.getId()+" name:"+per.getName()+" description:"+per.getDescription()); } } } public static void main(String[] args) throws Exception { SolrJTest solr = new SolrJTest(); //solr.createSolrServer(); solr.addDoc(); solr.deleteDocumentById(); solr.querySolr(); } }
参考文档:http://www.doc88.com/p-6763747939865.html
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍详解spring中使用solr的代码实现,包括了详解spring中使用solr的代码实现的使用技巧和注意事项,需要的朋友参考一下 在介绍solr的使用方法之前,我们需要安装solr的服务端集群。基本上就是安装zookeeper,tomcat,jdk,solr,然后按照需要配置三者的配置文件即可。由于本人并没有具体操作过如何进行solr集群的搭建。所以关于如何搭建solr集群,读者可以
问题内容: 我需要连接到代理(?)后面的Solr服务器。以下我尝试过(没什么特别的): 堆栈跟踪: 之后,我尝试了HttpSolrServer的其他构造函数,但是我不知道如何将用户名和密码正确设置到HttpClient中。有人可以帮忙吗? 问题答案: 我看不到您尝试在代码中通过代理连接的位置,仅在创建时提供了solr网址。您可以在创建实例时提供自己的实例。您的实例可以包含有关代理的信息。所需的代码
本文向大家介绍angular中使用Socket.io实例代码,包括了angular中使用Socket.io实例代码的使用技巧和注意事项,需要的朋友参考一下 服务端(nodeJs/express): 客户端,创建一个ChatService ChatComponent 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍redis在java中的使用(实例讲解),包括了redis在java中的使用(实例讲解)的使用技巧和注意事项,需要的朋友参考一下 1、首先下载jar包放到你的工程中 2、练习 总结:自己可以封装一些工具类方便使用,包括连接池的配置,jedis参数的配置等。 RedisTemplate封装了从JedisPool中取jedis以及返回池中 以上这篇redis在java中的使用(实例讲解)
本文向大家介绍PHP中的traits实现代码复用使用实例,包括了PHP中的traits实现代码复用使用实例的使用技巧和注意事项,需要的朋友参考一下 PHP5.4后新增traits实现代码复用机制,Trait和类相似,但不能被实例化,无需继承,只需要在类中使用关键词use引入即可,可引入多个Traits,用','隔开。 (1)Trait简单使用 (2)优先级问题 Trait会覆盖继承的方法,当前类会
本文向大家介绍在c#中使用servicestackredis操作redis的实例代码,包括了在c#中使用servicestackredis操作redis的实例代码的使用技巧和注意事项,需要的朋友参考一下 声明一个客户端对象: 一 .基本KEY/VALUE键值对操作: 1. 添加/获取: 2. 获取数据 3. 获取指定索引位置数据 4. 移除: 二.存储对象: 1.通常方式(底层使用json序列化