<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> |
索引文档数:10000 | |||||||
序号 | Merge factor | Min merge docs | Max merge docs | 第一次的时间ms | 第2次的时间ms | 第3次的时间ms | 平均时间ms |
Min merge docs取相同值,Merge factor逐渐增大 | |||||||
1 | 10 | 10 | 2147483647 | 44094 | 44313 | 44391 | 44266 |
2 | 100 | 10 | 2147483647 | 38922 | 39579 | 39437 | 39312.66667 |
3 | 1000 | 10 | 2147483647 | 39859 | 39969 | 40469 | 40099 |
4 | 10 | 100 | 2147483647 | 6922 | 7171 | 7031 | 7041.333333 |
6 | 100 | 100 | 2147483647 | 6281 | 6406 | 6516 | 6401 |
8 | 1000 | 100 | 2147483647 | 6063 | 6172 | 6187 | 6140.666667 |
5 | 10 | 1000 | 2147483647 | 3454 | 3563 | 3531 | 3516 |
7 | 100 | 1000 | 2147483647 | 3313 | 3360 | 3250 | 3307.666667 |
9 | 1000 | 1000 | 2147483647 | 3516 | 3359 | 3234 | 3369.666667 |
Merge factor取相同值,Min merge docs逐渐增大 | |||||||
1 | 10 | 10 | 2147483647 | 44094 | 44313 | 44391 | 44266 |
4 | 10 | 100 | 2147483647 | 6922 | 7171 | 7031 | 7041.333333 |
5 | 10 | 1000 | 2147483647 | 3454 | 3563 | 3531 | 3516 |
2 | 100 | 10 | 2147483647 | 38922 | 39579 | 39437 | 39312.66667 |
6 | 100 | 100 | 2147483647 | 6281 | 6406 | 6516 | 6401 |
7 | 100 | 1000 | 2147483647 | 3313 | 3360 | 3250 | 3307.666667 |
3 | 1000 | 10 | 2147483647 | 39859 | 39969 | 40469 | 40099 |
8 | 1000 | 100 | 2147483647 | 6063 | 6172 | 6187 | 6140.666667 |
9 | 1000 | 1000 | 2147483647 | 3516 | 3359 | 3234 | 3369.666667 |
发生异常 | |||||||
1 | 在使用RAMDirectory时,Merge factor取值过大发生IOException; 在使用FSDirectory时,Merge factor的值不超过操作系统的限制就可,我测试时将Merge factor设为100000都没有问题 | ||||||
2 | Min 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的最大值。取值太小影响搜索效果 。