2016-08-16 74 views
0

我想問一下如何用solrJ從solr集合中獲取所有文檔。
我寫了一個代碼,但得到錯誤
線程「main」中的異常org.apache.solr.client.solrj.SolrServerException:請求中沒有指定集合參數並且未設置默認集合。用光標Solr/Solrj分頁

String zkHostString = "linux152:2181,linuxUL:2181,linux170:2181/solr"; 
CloudSolrClient server = new CloudSolrClient(zkHostString); 
SolrQuery parameters = new SolrQuery(); 
public void cursorMark() throws IOException, SolrServerException { 
    SolrQuery parameters = new SolrQuery();  
    QueryResponse response = new QueryResponse(); 
    response = server.query(parameters); 
    parameters.set("q",":"); 
    parameters.set("qt","/select"); 
    parameters.setParam("wt","json"); 
    parameters.set("collection", "RetailDev_Protocol"); 
    int fetchSize = 2; 
    parameters.setRows(fetchSize); 
    String cursorMark = CursorMarkParams.CURSOR_MARK_START; 
    boolean done = false; 
    while (! done) { 
     parameters.set(CursorMarkParams.CURSOR_MARK_PARAM, cursorMark); 

     long offset = 0; 
     long totalResults = response.getResults().getNumFound(); 

     while (offset < totalResults) 
     { 
      parameters.setStart((int) offset); 

      try { 
      for (SolrDocument doc : server.query(parameters).getResults()) 
       { 
        log.info((String) doc.getFieldValue("title")); 
       } 
     } catch (SolrServerException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

      offset += fetchSize; 
     } 

    String nextCursorMark = (response).getNextCursorMark(); 



} 
    SolrDocumentList list = response.getResults(); 
    System.out.println(list.toString()); 
    } 
+0

在Solr中實現正確的分頁是相當困難的,我寫了一篇文章,看看這個http://stackoverflow.com/questions/16992296/solr-solrj-pagination/37648027#37648027 – freedev

回答

1

您需要設置您的收藏方式如下:

server.setDefaultCollection("<MY_COLLECTION"); 

否則你,你在你的問題中指定的錯誤。

+0

謝謝!它工作的AR1。 – shalu

+0

大@shalu,請記住接受和/或投票的答案。 – AR1