關于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
最后合并成一個段























posted on 2008-05-15 19:27 曉宇 閱讀(1432) 評論(0) 編輯 收藏 所屬分類: LUCENE