Solr09-SolrJ的简介和使用

1 SolrJ是什么

说明: SolrJ是访问Solr服务的Java客户端程序, 提供了索引和搜索的请求方法.

SolrJ通常嵌入在业务系统中, 通过SolrJ的API接口操作Solr服务, 流程如下图:

图片

2 SolrJ对索引的CRUD操作

使用SolrJ访问Solr服务, 完成索引的增、删、改、查操作.

2.1 创建Maven工程(打包方式选择为jar)

图片

2.2 配置pom.xml文件, 加入SolrJ的依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 "> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- solrj版本 --> <solrj.version>4.10.4</solrj.version> <!-- ...... --> </properties> <dependencies> <!-- solrj依赖 --> <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>${solrj.version}</version> </dependency> <!-- ...... --> </dependencies> </project> 2.3 添加和修改索引

说明: Solr是根据id域(唯一约束)执行索引的添加(或更新)的:

先根据id域执行查询, 查询到执行更新; 查询不到则执行添加.

创建HttpSolrServer对象, 连接Solr服务;

创建文档对象(SolrInuptDocument);

使用HttpSolrServer对象, 执行添加(或更新);

提交.

/** * 添加与修改索引 */ @Test public void testSaveAndUpdateIndex() throws Exception { // 1. 创建HttpSolrServer对象, 连接Solr服务 // 参数baseURL: 指定Solr的服务地址 HttpSolrServer server = new HttpSolrServer("http://127.0.0.1:7070/solr"); // 2. 创建文档对象(SolrInputDocument) SolrInputDocument document = new SolrInputDocument(); // 在Solr中, id域是必需的 document.addField("id", "9527"); // 先设置如下值: // document.addField("name", "solr solrj"); // 再次设置, 测试更新索引 -- 如果存在则更新, 不存在则添加 document.addField("name", "solr123 solrj"); // 3. 使用HttpSolrServer对象, 执行添加(或更新) server.add(document); // 4. 提交更新 server.commit(); }

图片

2.4 删除索引 2.4.1 根据id删除索引

创建HttpSolrServer对象, 连接Solr服务;

使用HttpSolrServer对象, 执行删除;

提交.

/** * 根据id删除索引 */ @Test public void testDeleteIndexById() throws SolrServerException, IOException { // 1. 创建HttpSolrServer对象, 连接Solr服务 // 参数baseURL: 指定Solr的服务地址 HttpSolrServer server = new HttpSolrServer("http://127.0.0.1:7070/solr"); // 2. 使用HttpSolrServer对象, 执行删除 server.deleteById("9527"); // 3. 提交 server.commit(); } 2.4.2 根据条件删除索引

创建HttpSolrServer对象, 连接solr服务;

使用HttpSolrServer对象, 执行删除;

提交.

/** * 根据条件删除索引 */ @Test public void testDeleteIndexByQuery() throws Exception { // 1. 创建HttpSolrServer对象, 连接Solr服务 HttpSolrServer server = new HttpSolrServer("http://127.0.0.1:7070/solr"); // 2. 使用HttpSolrServer对象, 执行删除 server.deleteByQuery("name: solr"); // 3. 提交更新 server.commit(); } 2.5 查询索引

创建HttpSolrServer对象, 连接Solr服务;

创建查询对象(SolrQuery);

使用HttpSolrServer对象, 执行查询, 返回查询响应对象QueryResponse;

使用QueryResponse对象, 获取查询的结果集SolrDocumentList;

处理结果集.

/** * 查询索引 */ @Test public void testQueryIndex() throws Exception { // 1. 创建HttpSolrServer对象, 连接Solr服务 HttpSolrServer server = new HttpSolrServer("http://127.0.0.1:7070/solr"); // 2. 创建查询对象(Query) // : 表示查询所有 SolrQuery query = new SolrQuery(":"); // 3.使用HttpSolrServer对象, 执行查询, 返回查询响应对象QueryResponse QueryResponse queryResponse = server.query(query); // 4.使用QueryResponse对象, 获取查询的结果集SolrDocumentList SolrDocumentList results = queryResponse.getResults(); // 5.处理结果集 // 打印查询到的结果数量 System.out.println("结果数量: " + results.getNumFound()); for (SolrDocument doc : results) { System.out.println("= = = = = = = = = = = = = = = = = = ="); // 打印id域和name域 System.out.println("id: " + doc.get("id")); System.out.println("name: " + doc.get("name")); } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxypj.html