Lucene索引性能调整测试结果

测试表明,Lucene的Merge factor对索引性能提升有限,而Min merge docs的增大能显著提高索引效率,尤其是对于RAMDirectory。Max merge docs通常设置为Integer最大值以保障搜索质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
索引文档数:10000
序号Merge factorMin merge docsMax merge docs第一次的时间ms2次的时间ms3次的时间ms平均时间ms
Min merge docs取相同值,Merge factor逐渐增大
11010214748364744094443134439144266
210010214748364738922395793943739312.66667
3100010214748364739859399694046940099
41010021474836476922717170317041.333333
610010021474836476281640665166401
8100010021474836476063617261876140.666667
510100021474836473454356335313516
7100100021474836473313336032503307.666667
91000100021474836473516335932343369.666667
Merge factor取相同值,Min merge docs逐渐增大
11010214748364744094443134439144266
41010021474836476922717170317041.333333
510100021474836473454356335313516
210010214748364738922395793943739312.66667
610010021474836476281640665166401
7100100021474836473313336032503307.666667
3100010214748364739859399694046940099
8100010021474836476063617261876140.666667
91000100021474836473516335932343369.666667
发生异常
1在使用RAMDirectory时,Merge factor取值过大发生IOException;
在使用FSDirectory时,Merge factor的值不超过操作系统的限制就可,我测试时将Merge factor设为100000都没有问题
2Min merge docs 取值过大发生java.lang.OutOfMemoryError
 从上面的测试结果我们可以得出以下结论:
1.Merge factor 的值只控制Directory(注意为RAMDirectory时,合并在内存中发生)中Segment的合并,增加它的值可以提高索引性能,但效果不明显(至少上面测试显示的结果是这样)。这一点与Lucene In action一书叙述不一样。
2.Min merge docs的值控制索引时占用的内存,增大它的值可以显著提高索引性能。(Directory为RAMDirectory时其实是在内存中copy)
3.Max merge docs上面没有测试的原因是,它的值一般都取Integer的最大值。取值太小影响搜索效果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值