什么是SolrJ?
SolrJ是访问Solr服务的Java客户端,提供索引(这里指的就是创建索引、更新索引以及删除索引)和搜索(这里指的是查询索引)的请求方法,SolrJ通常嵌入在业务系统中,通过SolrJ的API接口操作Solr服务,如下图所示。
使用SolrJ管理索引库
添加文档
初学者不妨思考一下添加文档这一操作的实现步骤,你尽管想,想出来算我输!我还是直接老老实实把实现步骤写出来吧!
- 第一步:创建一个普通的Java工程,例如SolrJ。
- 第二步:向Java工程中导入jar包。你不仅要问,应该导入哪些jar包呢?首先导入SolrJ核心jar包(即solr-solrj-8.4.0.jar)和该核心jar包所依赖的那些jar包。
除此之外,还应导入一些有关日志的jar包,它们位于solr-8.4.0\server\lib\ext
目录中。
在导入以上这些jar包的过程中,如果有重复的替换就行了。 - 第三步:和Solr服务器建立连接。由于咱们搭建的是单机版的Solr服务器,所以使用HttpSolrClient对象建立连接即可。
- 第四步:创建一个SolrInputDocument对象,然后添加若干域。
- 第五步:将SolrInputDocument对象添加到索引库中去,然后提交(手动提交)即可。
- 第六步:断开与Solr服务器的连接。
看你能不能对应着以上的实现步骤,将代码给整出来。整不出来也没关系,下面我会直接给出实现代码。
package com.meimeixia.solrj;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;
/**
* 使用SolrJ管理索引库
* 添加文档
* 删除文档
* 修改文档
* 查询文档
* @author liayun
*
*/
public class SolrJManager {
// 添加文档
@Test
public void testAdd() throws Exception {
String baseURL = "http://localhost:8080/solr/collection1"; // Solr服务器的地址,特别指定核1
// String baseURL = "http://localhost:8080/solr/collection2"; // Solr服务器的地址,特别指定核2
// 和单机版Solr服务器建立连接
SolrClient solrClient = new HttpSolrClient.Builder(baseURL)
.withConnectionTimeout(10000)
.withSocketTimeout(60000)
.build(); // 至此,终于连上了Solr服务器
// 创建一个文档对象
SolrInputDocument doc = new SolrInputDocument();
// 向文档中添加域
/*
* setField方法中的两个参数的说明如下:
* 第一个参数:域的名称,域的名称必须是在managed-schema配置文件中定义好的,也就是说这个域必须存在
* 第二个参数:域的值
*/
doc.setField("id", "haha");
doc.setField("name", "范冰冰");
// 把文档对象添加到索引库中
solrClient.add(doc);
solrClient.commit(); // 手动提交,当然了,也可以自动提交
// 断开与Solr服务器的连接
solrClient.close();
}
}
删除文档
根据id删除
要想根据id删除文档,只须在以上SolrJManager类中添加一个如下方法即可。
// 删除文档(根据id删除)
@Test
public void testDeleteDocumentById()</