1. 程式人生 > >淘淘商城22_全文檢索_通過solrj對solr索引庫進行操作

淘淘商城22_全文檢索_通過solrj對solr索引庫進行操作

百度網盤:jar包solrj

連結:https://pan.baidu.com/s/1HJ5M4YGyXj4AA3Enf6sDsA 
提取碼:rqy9 

 

步驟:

第一步:建立一個java工程
第二步:匯入jar包。包括solrJ的jar包

第三步:和Solr伺服器建立連線。HttpSolrServer物件建立連線。

第四步:建立一個SolrInputDocument物件,然後新增域。

第五步:將SolrInputDocument新增到索引庫。

第六步:提交。

1. 建立一個java project工程 TestSolrJ

2. 建立一個lib,如上圖

3. 在lib中新增jar包

4. 程式碼編寫

在這裡新增Junit的jar包

4.1 新增

package com.taotao.solrj;

import java.io.IOException;

import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;

public class SolrJTest {

	@Test
	public void addIndex() throws Exception{
		//1.連線 solr
		SolrServer solr = new HttpSolrServer("http://localhost:8081/solr");
		//2.建立索引庫
		SolrInputDocument document = new SolrInputDocument();
		//3.新增資訊
		document.addField("id", "11111");
		document.addField("product_name", "郭凱明");
		//把資訊新增到索引庫中
		solr.add(document);
		//提交事務
		solr.commit();
	}
}

4.2 修改

只需要按照原來的id進行重新賦值,就是修改操作.

4.3 刪除

/**
	 * 刪除
	 * @throws SolrServerException
	 * @throws IOException
	 */
	@Test
	public void delIndex() throws SolrServerException, IOException{
		SolrServer server = new HttpSolrServer("http://localhost:8081/solr");
		server.deleteById("1");//刪除id為1的產品
		//server.deleteByQuery("*:*");//刪除所有資料
		server.commit();
	}

id為1的產品已沒有 

4.4 查詢之簡單查詢

/**
	 * 簡單查詢
	 * @throws SolrServerException
	 */
	@Test
	public void queryIndex() throws SolrServerException{
		//1.建立連線
		SolrServer server = new HttpSolrServer("http://localhost:8081/solr");
		//2.建立查詢物件
		SolrQuery query = new SolrQuery();
		//3.建立查詢條件
		query.setQuery("*:*");
		//4.新增查詢條件
		QueryResponse response = server.query(query);
		//5.獲取查詢返回結果
		SolrDocumentList list = response.getResults();
		//6.遍歷
		for (SolrDocument solrDocument : list) {
			String str = solrDocument.get("id")+","+solrDocument.get("product_name")+","+solrDocument.get("product_price");
			System.out.println(str);
		}
		
	}

4.5 查詢之複雜查詢

/**
	 * 複雜查詢
	 * @throws SolrServerException
	 */
	@Test
	public void queryIndexHight() throws SolrServerException{
		//建立連線
		SolrServer  solrServer  = new HttpSolrServer("http://localhost:8081/solr");
		SolrQuery  solrQuery = new SolrQuery();
		//新增查詢條件
		solrQuery.setQuery("product_name:檯燈");
		//新增 過濾條件
		solrQuery.addFilterQuery("product_price:[20 TO 30]");
		//新增排序
		solrQuery.setSort("product_price",ORDER.desc);
		//預設顯示10條記錄
		solrQuery.setStart(0);
		solrQuery.setRows(50);//顯示條數
		//設定顯示的返回欄位內容
		solrQuery.setFields("id,product_name,product_price");
		//設定預設搜尋域
		solrQuery.set("product_keywords");
		//高亮顯示
		solrQuery.setHighlight(true);//開啟高亮顯示
		//設定高亮顯示的域
		solrQuery.addHighlightField("product_name");
		//設定高亮顯示的開始標籤
		 solrQuery.setHighlightSimplePre("<span style=\"color:red\">");
		 solrQuery.setHighlightSimplePost("</span>");
		
		 QueryResponse response = solrServer.query(solrQuery);
		 //獲取查詢返回結果
		 SolrDocumentList  documentList = response.getResults();
		 //遍歷集合
		 Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();//取高亮顯示的資訊
		 for (SolrDocument solrDocument : documentList) {
			 List<String> list = highlighting.get(solrDocument.get("id")).get("product_name");
			 if(list.size()>0&& list !=null){
				 System.out.println(list.get(0));
			 }
			System.out.println(solrDocument.get("id")+","+solrDocument.get("product_name")+","+solrDocument.get("product_price"));
		}
	}