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;
}