-1

当我使用 DirectoryReader.open 打开一些超过 100G 的目录时,它打开了很长时间。(lucene 4.2)有人可以告诉我应该使用什么策略/优化来加快阅读器的打开速度吗?也许在索引时应该注意。

可能我描述的不够清楚。

每天有超过 7000 万条数据被索引。每个索引数据库存储空间为40G。
如果在一个月内支持检索。(30*40G,实际上需要支持更长的时间)我得打开所有indexReader,添加到MultiReader中再使用。打开很慢。我只知道设置IndexWriter的mergeFactor值. (较大的值会加快索引速度,但会增加需要同时打开的文件数。)我可以设置一个较小的值来优化。有没有其他参数或解决方案。

4

1 回答 1

2

打开一个IndexReader是一项昂贵的操作。通常最好保留相同的 IndexReader 并重用它。您可以通过调用使其保持最新状态DirectoryReader.openIfChanged

IndexReader newReader = DirectoryReader.openIfChanged(oldReader)
if (newReader == null) {
    readerToUse = oldReader;
} else {
    readerToUse = newReader;
    oldReader.close(); //Make sure you close the old one!!

即使索引发生更改并生成新的阅读器,这通常仍然比DirectoryReader.open.

于 2013-05-10T16:17:20.610 回答