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("----------------------------------");
}
}
}