Есть ли способ перебрать ответ 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 ()
требует целого числа
, когда ] SolrDocumentList.getStart () / getNumFound ()
return long
?