SolrJ(java 客户端操作solr)
一、导包(maven配置)
<?xml version="1.0" encoding="UTF-8"?> <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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.xushuai.solrj</groupId> <artifactId>solrj</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>4.10.4</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.7.5</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.2</version> </dependency> </dependencies> </project>
二、代码实现
package com.xushuai.solrj; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrServer; 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; import org.junit.After; import org.junit.Before; import org.junit.Test; import javax.management.Query; import java.io.IOException; /** * solr索引维护 * Author: xushuai * Date: 2018/5/8 * Time: 16:14 * Description: */ public class SolrJManager { private HttpSolrServer solrServer = null; /** * 准备工作:连接solr服务器 * @auther: xushuai * @date: 2018/5/8 16:34 */ @Before public void setUp(){ //默认连接:collection1库 String solrUrl = "http://localhost:8080/solr"; solrServer = new HttpSolrServer(solrUrl); } /** * 提交 * @auther: xushuai * @date: 2018/5/8 16:35 * @throws: IOException, SolrServerException */ @After public void tearDown() throws IOException, SolrServerException { solrServer.commit(); } /** * 新增、修改 * @auther: xushuai * @date: 2018/5/8 16:14 * @throws: IOException, SolrServerException */ @Test public void solrAdd() throws IOException, SolrServerException { //创建文档对象 SolrInputDocument doc = new SolrInputDocument(); //solr必须手动设置文档id,否则会出错 doc.setField("id","9528"); doc.setField("name","xushuai"); //调用server保存 /* * 如果doc对象的id在库中已存在,那么就执行更新操作 * 如果不存在,就执行新增操作 */ solrServer.add(doc); } /** * 删除 * @auther: xushuai * @date: 2018/5/8 16:38 * @throws: IOException, SolrServerException */ public void solrDelete() throws IOException, SolrServerException { /* * 删除方法介绍(总体为两类): * 1、deleteById(id),删除指定id索引。有重载方法,可以指定多个id值 * 2、deleteByQuery(query),按指定条件删除 */ // *:*:删除全部 // id:9528:删除id为9528的索引 solrServer.deleteByQuery("id:9528"); } /** * 查询 * @auther: xushuai * @date: 2018/5/8 16:44 * @throws: SolrServerException */ @Test public void solrSearch() throws SolrServerException { //查询条件对象 SolrQuery query = new SolrQuery(); //设置查询条件 query.set("q","product_name:台灯"); //设置查询过滤规则 query.set("fq","product_catalog_name:雅致灯饰"); //设置排序规则 query.addSort("product_price", SolrQuery.ORDER.asc); //获取查询结果 QueryResponse response = solrServer.query(query); SolrDocumentList results = response.getResults(); //遍历结果集打印到控制台 for (SolrDocument document: results) { System.out.println(document.get("id")); System.out.println(document.get("product_name")); System.out.println(document.get("product_catalog_name")); System.out.println(document.get("product_price")); System.out.println("----------------------------------"); } } }