天天看點

Solr索引庫的使用SolrJ0、添加依賴一、配置檔案:applicationContext-solr.xml 二、使用

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

}
           

繼續閱讀