solrj的使用,环境准备,工程搭建,索引创建,添加\修改索引,删除索引,查询
1??????Solrj的使用
1.1?????什么是solrj
Solrj是訪問solr服務的java程序客戶端。
?
1.2?????需求
使用solrj調用solr服務實現對索引庫的增刪改查操作。
1.3?????環境準備
l? Solr:4.10.3
l? Jdk環境:1.7.0_72(solr4.10 不能使用jdk1.7以下)
l? Ide環境:eclipse indigo
1.4?????工程搭建
1.4.1?? 第一步:創建java工程
1.4.2?? 第二步:添加jar
l? Solrj的包
如上圖:
solr-solrj-4.10.3.jar是solr的核心包
solrj-lib是solr的依賴包,若創建的是java工程,需要將solr-solrj-4.10.3.jar和solrj-lib中的包都添加到工程的lib包里面。
l? Solr服務的其它依賴包
1.5?????代碼實現
1.5.1?? 添加\修改索引
注意:在solr中添加和修改必須含有一個唯一主鍵,如果該主鍵已經存在,則進行修改操作,否則就執行添加操作
@Test ?? public void updateIndex() throws Exception { ????? // 創建HttpSolrServer,可以訪問solr服務 ????? // 參數就是solr服務的url ????? HttpSolrServer server = new HttpSolrServer("http://localhost:8080/solr"); ????? // solr的文檔對象 ????? SolrInputDocument doc = new SolrInputDocument(); ????? // 圖書信息 ????? doc.addField("id", "8888"); ????? doc.addField("product_name", "solr編程思想"); ????? doc.addField("product_catalog", "99"); ????? doc.addField("product_catalog_name", "圖書"); ????? doc.addField("product_price", "8888.00"); ? ????? // 執行添加操作,如果該id存在,則進行修改 ????? server.add(doc); ? ????? // 提交 ????? server.commit(); ?? } |
?
1.5.2?? 刪除索引
@Test ?? public void deleteIndex() throws Exception { ????? // 創建HttpSolrServer,可以訪問solr服務 ????? // 參數就是solr服務的url ????? HttpSolrServer server = new HttpSolrServer("http://localhost:8080/solr"); ? ????? // 根據id刪除 ????? // server.deleteById("8888"); ????? // 根據查詢條件刪除 ????? server.deleteByQuery("id:8888"); ????? // 全部刪除、慎用!!!! ????? // server.deleteByQuery("*:*"); ????? // 提交 ????? server.commit(); ?? } |
?
查詢
package cn.com.hbny.solr; ? import java.util.List; import java.util.Map; ? import org.apache.solr.client.solrj.SolrQuery; 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.junit.Test; ? /** ?* @brief IndexManager.java ?* @attention 學習案例 ?* @author toto ?* @date 2017年3月12日 ?* @note begin modify by 修改人 修改時間? 修改內容摘要說明 ?*/ public class IndexSearch { ??? ???????? @Test ???????? public void search() throws Exception { ?????????????????? //創建HttpSolrServer,可以訪問solr服務 ?????????????????? //參數就是solr服務的url ?????????????????? HttpSolrServer server = new HttpSolrServer("http://localhost:8080/solr"); ?????????????????? ?????????????????? //創建solrQuery對象 ?????????????????? SolrQuery query = new SolrQuery(); ?????????????????? //設置q,查詢條件 ?????????????????? query.set("q", "product_name:小黃人"); ?????????????????? //設置fg,過濾查詢條件 ?????????????????? query.set("fq", "product_catalog_name:幽默雜貨"); ?????????????????? //設置sort,排序 ?????????????????? query.set("sort", "product_price desc"); ?????????????????? ?????????????????? //設置start,rows,分頁信息(寫上默認值) ?????????????????? query.setStart(0); ?????????????????? query.setRows(10); ?????????????????? ?????????????????? //設置df ?????????????????? query.set("df", "product_keywords"); ?????????????????? ?????????????????? //設置高亮 ?????????????????? query.setHighlight(true); ?????????????????? query.addHighlightField("product_name"); ?????????????????? query.setHighlightSimplePre("<font style=\"color:red\">"); ?????????????????? query.setHighlightSimplePost("</font>"); ?????????????????? ?????????????????? //執行搜索,并獲得返回值 ?????????????????? QueryResponse response = server.query(query); ?????????????????? ???????? ???????? //根據查詢條件匹配出的結果對象 ?????????????????? SolrDocumentList list = response.getResults(); ?????????????????? //匹配出的結果總數 ?????????????????? long count = list.getNumFound(); ?????????????????? ?????????????????? System.out.println("匹配出的結構總數:" + count); ?????????????????? ?????????????????? //獲取高亮信息 ?????????????????? Map<String, Map<String, List<String>>> highlighting = response.getHighlighting(); ?????????????????? for (SolrDocument solrDocument : list) { ??????????????????????????? System.out.println("商品id:" + solrDocument.get("id")); ??????????????????????????? System.out.println("商品名稱:" + solrDocument.get("product_name")); ??????????????????????????? System.out.println("商品分類:" + solrDocument.get("product_catalog")); ??????????????????????????? System.out.println("商品分類名稱:" ?????????????????????????????????????????????? + solrDocument.get("product_catalog_name")); ??????????????????????????? System.out.println("商品價格:" + solrDocument.get("product_price")); ??????????????????????????? // System.out.println("商品描述:"+solrDocument.get("product_description")); ??????????????????????????? System.out.println("商品圖片地址:" + solrDocument.get("product_picture")); ??????????????????????????? ??????????????????????????? List<String> list2 = highlighting.get(solrDocument.get("id")).get("product_name"); ??????????????????????????? if(list2!=null){ ???????????????????????????????????? System.out.println("高亮后的信息:"+list2.get(0)); ??????????????????????????? } ?????????????????? } ???????? } } |
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的solrj的使用,环境准备,工程搭建,索引创建,添加\修改索引,删除索引,查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.myql数据导入到solr,并建立s
- 下一篇: 求一个捷达前卫2010的3D模型,谢谢