如何在Solr中實現多core查詢


基於solr或者elasticsearch提供的多核,多索引,多shard等查詢能力,一般都是由lucene提供的多索引查詢的功能演化而來的,這個功能在單機版的lucene里面確實沒有發揮多大的威力,但是確是solrclourd,elasticsearch分布式集群查詢數據的基礎,正是因為lucene提供了多索引歸並查詢已經合並排序功能,所以在給它加上http的能力,就能把lucene也做成一個分布式的查詢框架,當然一個分布式搜索引擎,需要考慮的內容非常多,容錯,副本,高可靠,等都是主要功能。 

倫理片 http://www.dotdy.com/

本篇介紹洗下如何在solr中實現多core查詢,其實也叫多shard查詢,多core查詢的要求是,兩份索引里面的主鍵字段,和查詢數據字段必須一致,就是說都必須有一樣的字段名,否則查詢的時候或者歸並merge的時候會報錯,其實這正是分布式搜索的基礎條件,只不過現在我們不用solrcloud也能查詢多個core,需要注意前提條件: 
主鍵字段+查詢字段的名稱必須一致,下面看solrj里面如何實現: 

Java代碼   收藏代碼
  1.     /*** 
  2.      * 多核查詢測試  
  3.      * @throws Exception 
  4.      */  
  5.     public static void queryMultiCore()throws Exception{  
  6.        //查詢a和b下面的數據,  
  7.         HttpSolrClient sc=new HttpSolrClient("http://192.168.1.215:8983/solr/a");  
  8.         String shards = "192.168.1.215:8983/solr/a,192.168.1.214:8983/solr/b";  
  9.         ModifiableSolrParams solrParams = new ModifiableSolrParams();  
  10.         solrParams.set("q", "sname:北京奇虎科技有限公司");  
  11. //        solrParams.set("q.op", "AND");//設置查詢關系  
  12.         solrParams.set("fl", "*,score");//設置過濾  
  13.         solrParams.set("shards", shards);//設置shard  
  14.         QueryResponse rsp = sc.query(solrParams);  
  15.         System.out.println("命中數量:"+rsp.getResults().getNumFound());  
  16.         for(SolrDocument sd:rsp.getResults()){  
  17.             System.out.println(sd);  
  18.         }  
  19.         sc.close();  
  20.     }  
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM