Lucene:快速(呃)批量获取文档?

Lucene:快速(呃)批量获取文档?,lucene,search-engine,aggregate,bulk,Lucene,Search Engine,Aggregate,Bulk,作为实验的一部分,我尝试在Lucene上构建一些实时聚合。文档的值存储在索引中。这对于多达10K的文档非常有效 对于较大数量的文档,这会变得有点慢。我假设在获取大量文档方面没有太多投资,因为这种做法违背了搜索引擎的目的 然而,能够做到这一点是很酷的。所以,基本上我的问题是:我该怎么做才能更快地从Lucene获取文档?还是有更聪明的方法 我已经只检索了需要的字段 [编辑] 索引非常大,大于50GB。这不适合内存。字段的数量不同,我有几种类型的文档。聚合主要发生在固定的文档类型上;但是没有办法预先知

作为实验的一部分,我尝试在Lucene上构建一些实时聚合。文档的值存储在索引中。这对于多达10K的文档非常有效

对于较大数量的文档,这会变得有点慢。我假设在获取大量文档方面没有太多投资,因为这种做法违背了搜索引擎的目的

然而,能够做到这一点是很酷的。所以,基本上我的问题是:我该怎么做才能更快地从Lucene获取文档?还是有更聪明的方法

我已经只检索了需要的字段

[编辑]
索引非常大,大于50GB。这不适合内存。字段的数量不同,我有几种类型的文档。聚合主要发生在固定的文档类型上;但是没有办法预先知道是哪一个。

你把索引放在内存中了吗?如果整个索引都放在内存中,那将是一个巨大的加速

一旦你获得了点击率(即使对于10k记录,它也会非常快地返回),我会打开多个线程/读卡器来访问它们


我做的另一件事是在Lucene中只存储一些属性(即不存储一个类中的50个属性)。有时,只需获取ID列表并更快地从服务/数据库获取其他内容,您就可以更快地完成任务。

关于库的一般用途,您是对的-检索成千上万个包含大量字段的文档不是主流用途。你有多少字段?你的记忆限制是什么?你能负担得起将字段放入字段缓存吗?它可以显著提高性能。嗨,巴特,这个索引不适合内存。我注意到文档的收集速度非常快,没有问题。我喜欢多线程阅读器的想法;虽然如果能在一个线程中更快地完成它会更好:)@RobAu另一件你可以做的事情是将索引拆分(或切分)到多个服务器中。这样,您返回的是5k而不是10k(如果您有2个碎片)。如果您这样做,Solr可能是一个更好的选择,因为Lucene没有内置切分。如果您是在Lucene中执行此操作,那么您可以将索引拆分为两个web服务,并作为Lucene搜索方法的入口点。