Есть ли способ перебрать ответ Solrj так, чтобы результаты выбирались постепенно во время итерации, а не возвращать гигантский в памяти ArrayList
?
Или мы должны прибегнуть к этому:
SolrQuery query = new SolrQuery();
query.setQuery("*:*");
int fetchSize = 1000;
query.setRows(fetchSize);
QueryResponse rsp = server.query(query);
long offset = 0;
long totalResults = rsp.getResults().getNumFound();
while (offset < totalResults)
{
query.setStart((int) offset); // requires an int? wtf?
query.setRows(fetchSize);
for (SolrDocument doc : server.query(query).getResults())
{
log.info((String) doc.getFieldValue("title"));
}
offset += fetchSize;
}
И пока я в теме, почему SolrQuery.setStart()
требует integer
, когда SolrDocumentList.getStart()/getNumFound()
возвращает long
?