gpt4 book ai didi

Solr/SolrJ : how to iterate results without creating a giant ArrayList

转载 作者:行者123 更新时间:2023-12-04 17:40:31 25 4
gpt4 key购买 nike

有没有办法迭代 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 ?

最佳答案

该代码看起来是正确的。您还可以将其包装在 Iterator 中,这样您的客户端代码就不必了解有关底层分页的任何信息。

关于 SolrQuery.setStart()需要一个整数,它肯定看起来很奇怪,我认为你是对的,它也应该很长。尝试在 solr-user 上询问或 lucene-dev邮件列表。

关于Solr/SolrJ : how to iterate results without creating a giant ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5051460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com