You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2010/08/14 12:13:43 UTC

svn commit: r985455 - in /lucene/dev/trunk/lucene: CHANGES.txt src/java/org/apache/lucene/index/LogMergePolicy.java

Author: mikemccand
Date: Sat Aug 14 10:13:43 2010
New Revision: 985455

URL: http://svn.apache.org/viewvc?rev=985455&view=rev
Log:
LUCENE-2602: enable calibrateSizeByDeletes in default merge policy

Modified:
    lucene/dev/trunk/lucene/CHANGES.txt
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/LogMergePolicy.java

Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=985455&r1=985454&r2=985455&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Sat Aug 14 10:13:43 2010
@@ -100,6 +100,11 @@ Changes in backwards compatibility polic
 * LUCENE-2484: Removed deprecated TermAttribute. Use CharTermAttribute
   and TermToBytesRefAttribute instead.  (Uwe Schindler)
 
+* LUCENE-2602: The default (LogByteSizeMergePolicy) merge policy now
+  takes deletions into account by default.  You can disable this by
+  calling setCalibrateSizeByDeletes(false) on the merge policy.  (Mike
+  McCandless)
+
 API Changes
 
 * LUCENE-2302, LUCENE-1458, LUCENE-2111, LUCENE-2514: Terms are no longer

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/LogMergePolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/LogMergePolicy.java?rev=985455&r1=985454&r2=985455&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/LogMergePolicy.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/LogMergePolicy.java Sat Aug 14 10:13:43 2010
@@ -60,8 +60,7 @@ public abstract class LogMergePolicy ext
   long maxMergeSize;
   int maxMergeDocs = DEFAULT_MAX_MERGE_DOCS;
 
-  /* TODO 3.0: change this default to true */
-  protected boolean calibrateSizeByDeletes = false;
+  protected boolean calibrateSizeByDeletes = true;
   
   private boolean useCompoundFile = true;
   private boolean useCompoundDocStore = true;
@@ -162,6 +161,7 @@ public abstract class LogMergePolicy ext
   protected long sizeDocs(SegmentInfo info) throws IOException {
     if (calibrateSizeByDeletes) {
       int delCount = writer.get().numDeletedDocs(info);
+      assert delCount <= info.docCount;
       return (info.docCount - (long)delCount);
     } else {
       return info.docCount;
@@ -172,8 +172,9 @@ public abstract class LogMergePolicy ext
     long byteSize = info.sizeInBytes();
     if (calibrateSizeByDeletes) {
       int delCount = writer.get().numDeletedDocs(info);
-      float delRatio = (info.docCount <= 0 ? 0.0f : ((float)delCount / (float)info.docCount));
-      return (info.docCount <= 0 ?  byteSize : (long)(byteSize * (1.0f - delRatio)));
+      double delRatio = (info.docCount <= 0 ? 0.0f : ((float)delCount / (float)info.docCount));
+      assert delRatio <= 1.0;
+      return (info.docCount <= 0 ?  byteSize : (long)(byteSize * (1.0 - delRatio)));
     } else {
       return byteSize;
     }