0、添加依赖
<!-- solr客户端 -->
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
</dependency>
一、配置文件:applicationContext-solr.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
<bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
<constructor-arg name="baseURL" value="${SOLR_URL}"/>
<!-- <constructor-arg name="baseURL" value="http://192.168.25.130:8080/solr/collection1"/> -->
</bean>
</beans>
二、使用
package com.e3mall.solrj;
import java.util.List;
import java.util.Map;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
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.Test;
public class TestSolrJ {
/**
*
* @Description: 增改Solr文档
* @author WSC
* @date 2019年9月23日
* @throws Exception
* void
*/
@Test
public void addDocument() throws Exception {// 添加和更新文档
// 创建一个SolrServer对象,创建一个连接。参数solr服务的url
SolrServer solrServer = new HttpSolrServer("http://192.168.25.130:8080/solr/collection1");
// 创建一个文档对象SolrInputDocument
SolrInputDocument doc = new SolrInputDocument();
// 向文档对象中添加域。文档中必须包含一个id域,所有域的名称必须在schema.xml中定义
doc.addField("id", "doc1");
doc.addField("item_title", "测试商品02");
doc.addField("item_price", 1002);
// 把文档写入索引库
solrServer.add(doc);
// 提交
solrServer.commit();
}
/**
*
* @Description: 删除Solr文档
* @author WSC
* @date 2019年9月23日
* @throws Exception
* void
*/
@Test
public void deleteDocument() throws Exception {// 删除文档
SolrServer httpSolrServer = new HttpSolrServer("http://192.168.25.130:8080/solr/collection1");
// 删除文档
// httpSolrServer.deleteById("doc1");
httpSolrServer.deleteByQuery("id:doc1");
// 提交
httpSolrServer.commit();
}
/**
*
* @Description: 简单查询Solr文档
* @author WSC
* @date 2019年9月23日
* @throws Exception
* void
*/
@Test
public void queryIndex() throws Exception {
// 创建索引库对象
SolrServer solrServer = new HttpSolrServer("http://192.168.25.130:8080/solr/collection1");
// 创建一个SolrQuery对象
SolrQuery solrQuery = new SolrQuery();
// 设置查询条件
// solrQuery.setQuery("*:*");
solrQuery.set("q", "*:*");
// 执行查询,SolrResponse对象
QueryResponse queryResponse = solrServer.query(solrQuery);
// 取文档列表。去查询结果的总记录数
SolrDocumentList documentList = queryResponse.getResults();
System.out.println("获取查询结果的总记录数:" + documentList.getNumFound());
// 遍历文档列表,区域中的内容
for (SolrDocument solrDocument : documentList) {
System.out.println(solrDocument.get("id"));
System.out.println(solrDocument.get("item_title"));
System.out.println(solrDocument.get("item_sell_point"));
System.out.println(solrDocument.get("item_price"));
System.out.println(solrDocument.get("item_image"));
System.out.println(solrDocument.get("item_category_name"));
System.out.println("---------------------------------------------");
}
}
/**
*
* @Description: 复杂查询Solr文档
* @author WSC
* @date 2019年9月23日
* @throws Exception
* void
*/
@Test
public void queryIndexFuZa() throws Exception {
// 创建索引库对象
SolrServer solrServer = new HttpSolrServer("http://192.168.25.130:8080/solr/collection1");
// 创建一个SolrQuery对象
SolrQuery solrQuery = new SolrQuery();
// 设置查询条件
solrQuery.setQuery("手机");
solrQuery.setStart(0);
solrQuery.setRows(20);
solrQuery.set("df", "item_title");
solrQuery.setHighlight(true);
solrQuery.addHighlightField("item_title");
solrQuery.setHighlightSimplePre("<em>");
solrQuery.setHighlightSimplePost("</em>");
// 执行查询,SolrResponse对象
QueryResponse queryResponse = solrServer.query(solrQuery);
// 取文档列表。去查询结果的总记录数
SolrDocumentList documentList = queryResponse.getResults();
System.out.println("获取查询结果的总记录数:" + documentList.getNumFound());
// 遍历文档列表,区域中的内容
for (SolrDocument solrDocument : documentList) {
System.out.println(solrDocument.get("id"));
// 取高亮显示
Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();
List<String> list = highlighting.get(solrDocument.get("id")).get("item_title");
String title;
if (list != null && list.size() > 0) {
title = list.get(0);
} else {
title = solrDocument.get("item_title").toString();
}
System.out.println(title);
System.out.println(solrDocument.get("item_sell_point"));
System.out.println(solrDocument.get("item_price"));
System.out.println(solrDocument.get("item_image"));
System.out.println(solrDocument.get("item_category_name"));
System.out.println("---------------------------------------------");
}
}
}