2016-04-14 10 views
0

大きな結果セットサイズを持つので、カーソルを使用してsolrからレコードをフェッチしたいとします。 SolrTemplate.queryForCursor()メソッドを使用するには、これにqueryオブジェクトを渡します。しかし、Cursor型のresultCursorにはすべてのデータが含まれています。私は、私のpageSizeがヒットしたときにカーソルからの読み込みを停止したい。SolrTemplateでqueryForCursorを使用してpageSizeに等しいレコードをフェッチする方法

whileループは、一度に10をフェッチすることによってすべてのレコードを印刷し続けます。私のページサイズが100の場合、カーソルを使用して10回10レコードをフェッチしたいのですが、100レコード目で停止するにはどうしたらいいですか?

答えて

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; 
    }