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