淘淘商城22_全文檢索_通過solrj對solr索引庫進行操作
阿新 • • 發佈:2019-01-02
百度網盤: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"));
}
}