csusky

常用链接

统计

最新评论

关于IndexWriter中的3个性能参数

IndexWriter中有3个重要的性能参数
mergeFactor           默认为10
minMergeDocs      默认为10
maxMergeDocs     默认为Integer.maxValue

maxMergeDocs     一个段中所能包含的最大的doc数,达到这个数目即不再将段进行合并 一般不改变这个值
minMergeDocs      是指在RAMDirectory中保存的Doc的个数,达到minMergeDocs 个即要合并到硬盘上去(在硬盘上新建一个段)
mergeFactor           合并因子,是控制硬盘上的段的合并的,每次在硬盘上新建一个段之后即执行
                                 targetMergeDocs*=mergeFactor(一开始targetMergeDocs=minMergeDocs) 如果硬盘上的doc数目大于等于                            targetMergeDocs则将硬盘上最后建立的mergeFactor个段进行合并成一个段

拿默认的参数举例:
如果硬盘上面已经有9个段  每个段分别存储了10个Document,共(90个DOC),这时候如果程序再向硬盘合并一个新的段(含10个DOC),合并完之后targetMergeDocs=10*10  程序检查已经合并的最后(按照创建的时间先后顺序)mergeFactor个段的document的总和100是否大于等于targetMergeDocs(这里是100,刚好满足要求)于是程序又将硬盘上面的后10个段合并为一个新的段。

另外一个例子:
doc数目            段数目
  1000---------------9个
  100-----------------9个
  10   ----------------9个
这时如果再象硬盘中新建一个新的包含了10个doc的段
    doc数目            段数目
  (1) 1000----------------9个

  (2)  100-----------------9个

  (3)   10  ----------------9个
                                     
  (4)    10 ----------------1个
这时候(3)(4)首先合并成一个新的段(3-4)包含100个doc
 然后(2)(3-4)和并成一个新段(2-3-4)包含1000个doc
然后(1)(2-3-4)合并成一个新的段  包含10000个doc
最后合并成一个段


private final void maybeMergeSegments() throws IOException {
    
long targetMergeDocs = minMergeDocs;
    
while (targetMergeDocs <= maxMergeDocs) {
      
// find segments smaller than current target size
      int minSegment = segmentInfos.size();
      
int mergeDocs = 0;
      
while (--minSegment >= 0{
        SegmentInfo si 
= segmentInfos.info(minSegment);
        
if (si.docCount >= targetMergeDocs)
          
break;
        mergeDocs 
+= si.docCount;
      }


      
if (mergeDocs >= targetMergeDocs)          // found a merge to do
        mergeSegments(minSegment+1);
      
else
        
break;

      targetMergeDocs 
*= mergeFactor;        // increase target size
      System.out.println("- -- - -targetMergeDocs:"+targetMergeDocs);
      
try {Thread.sleep(5000);} catch(Exception e) {};
    }

  }

posted on 2008-05-15 19:27 晓宇 阅读(1418) 评论(0)  编辑  收藏 所属分类: LUCENE


只有注册用户登录后才能发表评论。


网站导航: