Solr索引庫的使用SolrJ

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

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章