如何在SolrTemplate中使用queryForCursor时获取等于pageSize的记录

时间:2016-04-14 17:08:41

标签: solr

我想使用游标从solr中获取记录,因为我有大的结果集大小。 我通过将查询对象传递给此来使用SolrTemplate.queryForCursor()方法。但是Cursor类型的resultCursor包含所有数据。当我的pageSize被击中时,我想停止从光标读取。

Criteria query = new Criteria("UserName").is ("abc");
query.setRows(10); // As i want to have fetch 10 records at a time
Cursor<T> resultCusrsor = solrTemplate.queryForCursor(query,Entity.class);
while(resultCursor.hasNext() ){
System.out.println( "Result : " + resultCusrsor.next());
}

此处的while循环通过一次提取10来保持打印所有记录。如果我的pagesize为100,我想使用光标10次获取10条记录,但是如何在第100条记录处停止?

1 个答案:

答案 0 :(得分:0)

您可以简单地为已获取的项目保留一个计数器,并在达到页面大小后终止。

    int pageSize = 100, rows = 10, currSize = 0;
    Criteria query = new Criteria("UserName").is("abc");
    query.setRows(rows); // As i want to have fetch 10 records at a time
    Cursor<T> resultCusrsor = solrTemplate.queryForCursor(query, Entity.class);
    while (resultCursor.hasNext() && currSize < pageSize) {
        System.out.println("Result : " + resultCusrsor.next());
        currSize = currSize + rows;
    }