Lucene索引优化之setUseCompoundFile

Lucene索引优化之setUseCompoundFile

本文使用的Lucene版本是7.5.0的版本,其它版本没有测试过,请大家自行测试。我们很多时候需要使用全文检索在增加我们到检索性能,有些时候使用ES或者是solr之类的又太重了了,这个时候Lucene是比较好的选择。正是因为这样的原因,选择了Lucene,在使用的过程中发现默认配置下创建索引的性能还不是很理想,索引就在想办法提高它的创建索引的性能,在逛网上面看到一些建立,此系列博客就是验证测试这些建议。

官网的创建索引的优化建议地址:https://wiki.apache.org/lucene-java/ImproveIndexingSpeed

在优化建议中有如下一条:Turn off compound file format,官网的解释如下:

Call setUseCompoundFile(false). Building the compound file format takes time during indexing 
(7-33% in testing for LUCENE-888). However, note that doing this will greatly increase the number of 
file descriptors used by indexing and by searching, so you could run out of file descriptors 
if mergeFactor is also large.

如果使用这个能够带来7-33%的性能,但是也会存在一定的风险,那就是目录下的文件的数量可能会很大,如果对操作系统了解的话就会知道,当我们某个目录下当文件数量很多的时候,这个目录是很难访问的。

测试情况

我测试的Document文档个数是420万个,在没有设置config.setUseCompoundFile(false) 之前,我创建索引的平均速度是在1.7万/秒,设置之后的速度能在1.8万/秒,但是这个时候索引目录下的文件如下:
lucene未压缩前的文件
这个目录下会有很多这些文件,总共128个文件。没有设置这个参数的文件是下面这样的,总共29个文件:
lucene压缩后的文件
这里留一个遗留的问题,我们下篇再分析,那就是这个各个文件分别存的是什么内容,哪些需要加载到内存中。
这些文件分别存储了什么内容可以参考这边文章:这是7.4的版本,基本一样

猜你喜欢

转载自blog.csdn.net/qq_14838603/article/details/84839970
今日推荐