1 SolrJ是什么
说明: SolrJ是访问Solr服务的Java客户端程序, 提供了索引和搜索的请求方法.
SolrJ通常嵌入在业务系统中, 通过SolrJ的API接口操作Solr服务, 流程如下图:
使用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")); } }