【发布时间】:2011-06-30 09:40:54
【问题描述】:
有没有办法迭代 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?
【问题讨论】: