我有许多文档存储在 Solr 集群中,并希望通过特定查询获取大量文档(大约 2000 万个)。我使用标准方法读取成批的行(例如,10000)并使用start
参数移动到下一批。然而,在大约 1 400 000 份文档之后,我开始获得OutOfMemoryError
. 我相信这是因为 Solr 在将文档发送给客户端之前对其进行排序的方式。据我所知,它使用优先级队列仅获取前 N 个结果,因此不需要将所有文档的标题加载到内存中。但是,当我要求它返回结果时,比如说,从 1,000,000 到 1,010,000,它也必须为所有之前的 1,000,000 个文档加载标题。
我正在寻找一种方法来避免这种情况,并且无需排序即可获得所有满足查询的结果。有没有办法做到这一点?如果不是,从 Solr 获得大量结果的适当方法是什么?