Posted on 2007-02-02 16:05
王睿 阅读(2354)
评论(0) 编辑 收藏 所属分类:
搜索技术
从下面的测试结果我们可以得出以下结论: 1.Merge factor 的值只控制Directory(注意为RAMDirectory时,合并在内存中发生)中Segment的合并,增加它的值可以提高索引性能,但效果不明显(至少上面测试显示的结果是这样)。这一点与Lucene In action一书叙述不一样。 2.Min merge docs的值控制索引时占用的内存,增大它的值可以显著提高索引性能。(Directory为RAMDirectory时其实是在内存中copy) 3.Max merge docs上面没有测试的原因是,它的值一般都取Integer的最大值。取值太小影响搜索效果。
索引文档数: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
|