2016-08-16 4 views
0

solrJ를 사용하여 solr 컬렉션에서 모든 doc을 가져 오는 방법을 묻습니다.
하나의 코드를 작성했지만 오류가 발생했습니다
"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