天天看點

Lucene 4.0 TieredMergePolicy

預設的merge policy。

findmerges:

先将所有段按照扣除删除文檔之後的位元組數(bytesize * (1.0 - delratio))降序排,對其中size() > 2.5g(maxmergedsegmentsize / 2)的段排除在外,其他隻要不是正在歸并的段,加入候選。

這個候選的清單如果大于allowedsegcount(allowedsegcount計算方法如下: 按照min(最小段size(),2m)做為10路歸并在總位元組數的限制下計算的段數),則需要從不同位置開始選歸并段組合,這些段組合要

進行打分,打分最低的最為一次歸并,這樣反複挑選,直到所有的候選段都已經挑過。

具體打分公式如下: 

skew * totaftermergebytes ^ 0.05 * nundelratio^2.0

如果歸并段接近5g(hitlarge=true),skew=1/10,否則為floorsize(candidate(0)) / totaftermergebytesfloored。

findforcedmerges提供segmentstomerge,findforcedmerge對其中是original的段按size()降序排,按照30個一組,從最小的段一次一次添加merge,最後剩下(maxsegmentcount - 1)個段不歸并(除非段數>不夠)。 

findforceddeletesmerges對于删除文檔數超過20%且不是正在歸并的段,按照size()排序,按30個一組,從最小的段做一次次歸并。

繼續閱讀