solr深分頁,遊標操作分頁,解決性能問題

遊標分頁操作,解決頁碼過大時的性能問題。當然這容易內存泄露,需要謹慎處理;代碼如下
 @Test
    public void pageByCursor() {
try {
   solrServer.connect();
   String query = "tablename:log_baseresult_netbehavior";
   SolrQuery q = new SolrQuery(query);
   q.setRows(10000000).setSort(SortClause.asc("rowkey"));


   String cursorMark = CursorMarkParams.CURSOR_MARK_START;


   boolean done = false;


   long time1 = System.currentTimeMillis();
   while (!done) {
q.set(CursorMarkParams.CURSOR_MARK_PARAM, cursorMark);
QueryResponse qresponse = solrServer.query(q, METHOD.POST);

String nextCursorMark = qresponse.getNextCursorMark();

SolrDocumentList sList = qresponse.getResults();
System.out.println("---------"+sList.size());
/*for (SolrDocument doc : sList) {
   Collection<String> fieldNames = doc.getFieldNames();
   if (fieldNames.contains("rowkey")) {
String rowKey = (String) doc.getFieldValue("rowkey");
//System.out.println(rowKey);
   }
}*/

if (cursorMark.equals(nextCursorMark)) {
   done = true;
}
cursorMark = nextCursorMark;
   }
   long time2 = System.currentTimeMillis();
   System.out.println("time:"+(time2-time1));
} catch (SolrServerException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
}
    }


發佈了49 篇原創文章 · 獲贊 3 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章