目前,我在编写完成后调用索引编写器的优化方法。因为我的数据集很大,所以需要很长时间(并且需要更多的空间(2*实际大小))来优化索引。我非常关注这一点,因为索引中经常包含许多文件。
所以
干杯
发布于 2010-10-12 07:31:47
Lucene常见问题说:
什么是索引优化以及何时使用它? IndexWriter类支持优化()方法,该方法压缩索引数据库并加快查询速度。在对文档集执行完整索引或索引增量更新之后,您可能希望使用此方法。如果增量更新经常添加文档,则只希望偶尔执行一次优化,以避免优化的额外开销。 如果我决定不优化索引,什么时候删除被删除的文档? 被删除的文档被标记为已删除。但是,在对索引进行优化之前,它们在索引中占用的空间不会被回收。随着更多的文档被添加到索引中,这个空间最终也会被回收,即使索引没有得到优化。
发布于 2010-10-12 07:54:29
您最了解您的数据,所以我建议您执行一些测试来度量您的查询在optimize
步骤下运行的速度。
根据javadocs,“在更新频繁的环境中,优化最好是在低卷时间内完成,如果有的话”。只有在必要时才应该进行优化。如果自上次优化以来,只有5%的文档发生了更改,那么这是不必要的,因此要了解文档更改的频率。也许你可以减少optimise
的频率,比如每隔几个小时或者一天一次。
还请看一看这条线,其中他们建议在索引不断更新的环境中,不要调用优化,而是选择设置较低的mergeFactor
。
https://stackoverflow.com/questions/3912253
复制相似问题