前面的學習都是關於客戶端的使用,今天我們用代碼來控制solr
這時你就會發現爲啥學那麼久的客戶端的原因了。
增加和更新以及刪除
爲啥增加和更新一起,因爲他們在solr中的操作是一樣的
ok 我們開始寫代碼吧
//鏈接solr客戶端
SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
//創建solr文檔對象
SolrInputDocument solrInputDocument = new SolrInputDocument();
//域要先定義後使用
solrInputDocument.addField("id", "a4521");
solrInputDocument.addField("product_name", "香蕉");
solrInputDocument.addField("product_price", "40");
//修改或者新增(若id一樣則更新不一樣則新增)
solrServer.add(solrInputDocument);
//通過id刪除
solrServer.deleteById("a4521");
//通過查詢語句刪除
solrServer.deleteByQuery("*:*");
//提交
solrServer.commit();
簡單的增加和刪除就ok了,批量增加和更新的話用循環就ok
查詢纔是重點
接下來我們搞搞查詢
// 連接solr的服務
SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
// 獲取solr查詢對象
SolrQuery solrQuery = new SolrQuery();
// 設置查詢關鍵字
solrQuery.setQuery("檯燈");
// 設置過濾查詢
solrQuery.addFilterQuery("product_price:[1 TO 100]");
// 設置排序
solrQuery.setSort("product_price", ORDER.asc);
// 從結果中挑選指定範圍的數據
// 設置起始
solrQuery.setStart(0);
// 設置數據數量
solrQuery.setRows(10);
// 設置默認搜索域
solrQuery.set("df", "product_keywords");
// 開啓高亮
solrQuery.setHighlight(true);
// 設置高亮域
solrQuery.addHighlightField("product_name");
// 設置高亮前綴
solrQuery.setHighlightSimplePre("<em>");
// 設置高亮後綴
solrQuery.setHighlightSimplePost("</em>");
// 查詢並獲取查詢響應對象
QueryResponse queryResponse = solrServer.query(solrQuery);
// 從查詢響應中獲取結果集
SolrDocumentList solrDocumentList = queryResponse.getResults();
// 打印結果集中的數據
for (SolrDocument solrDocument : solrDocumentList) {
// 獲取查詢結果
solrDocument.get("id");
// 獲取高亮結果
Map<String, Map<String, List<String>>> map = queryResponse.getHighlighting();
//獲取多層嵌套的結果
List<String> lists = map.get(solrDocument.get("id")).get("product_name");
if(lists != null)
System.out.println(lists.get(0));
}
運行結果
上面代碼對應頁面客戶端的功能
到此solr的學習算入門了