游标分页操作,解决页码过大时的性能问题。当然这容易内存泄露,需要谨慎处理;代码如下
@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.getFieldVal