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 2014/08/07 11:36:34 UTC
svn commit: r1616450 - in /lucene/dev/branches/branch_4x: ./ lucene/
lucene/core/
lucene/core/src/java/org/apache/lucene/codecs/blocktree/BlockTreeTermsWriter.java
lucene/core/src/test/org/apache/lucene/codecs/lucene41/TestLucene41PostingsFormat.java
Author: mikemccand
Date: Thu Aug 7 09:36:33 2014
New Revision: 1616450
URL: http://svn.apache.org/r1616450
Log:
LUCENE-5841: make sure final term blocks are the right size
Added:
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/codecs/lucene41/TestLucene41PostingsFormat.java
- copied unchanged from r1616448, lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/codecs/lucene41/TestLucene41PostingsFormat.java
Modified:
lucene/dev/branches/branch_4x/ (props changed)
lucene/dev/branches/branch_4x/lucene/ (props changed)
lucene/dev/branches/branch_4x/lucene/core/ (props changed)
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/blocktree/BlockTreeTermsWriter.java
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/blocktree/BlockTreeTermsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/blocktree/BlockTreeTermsWriter.java?rev=1616450&r1=1616449&r2=1616450&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/blocktree/BlockTreeTermsWriter.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/blocktree/BlockTreeTermsWriter.java Thu Aug 7 09:36:33 2014
@@ -673,8 +673,6 @@ public final class BlockTreeTermsWriter
long startFP = out.getFilePointer();
- // if (DEBUG) System.out.println(" writeBlock fp=" + startFP + " isFloor=" + isFloor + " floorLeadLabel=" + floorLeadLabel + " start=" + start + " end=" + end + " hasTerms=" + hasTerms + " hasSubBlocks=" + hasSubBlocks);
-
boolean hasFloorLeadLabel = isFloor && floorLeadLabel != -1;
final BytesRef prefix = new BytesRef(prefixLength + (hasFloorLeadLabel ? 1 : 0));
@@ -690,9 +688,11 @@ public final class BlockTreeTermsWriter
}
out.writeVInt(code);
- // if (DEBUG) {
- // System.out.println(" writeBlock " + (isFloor ? "(floor) " : "") + "seg=" + segment + " pending.size()=" + pending.size() + " prefixLength=" + prefixLength + " indexPrefix=" + brToString(prefix) + " entCount=" + length + " startFP=" + startFP + (isFloor ? (" floorLeadByte=" + Integer.toHexString(floorLeadByte&0xff)) : "") + " isLastInFloor=" + isLastInFloor);
- // }
+ /*
+ if (DEBUG) {
+ System.out.println(" writeBlock " + (isFloor ? "(floor) " : "") + "seg=" + segment + " pending.size()=" + pending.size() + " prefixLength=" + prefixLength + " indexPrefix=" + brToString(prefix) + " entCount=" + (end-start+1) + " startFP=" + startFP + (isFloor ? (" floorLeadLabel=" + Integer.toHexString(floorLeadLabel)) : ""));
+ }
+ */
// 1st pass: pack term suffix bytes into byte[] blob
// TODO: cutover to bulk int codec... simple64?
@@ -719,9 +719,9 @@ public final class BlockTreeTermsWriter
/*
if (DEBUG) {
BytesRef suffixBytes = new BytesRef(suffix);
- System.arraycopy(term.term.bytes, prefixLength, suffixBytes.bytes, 0, suffix);
+ System.arraycopy(term.termBytes, prefixLength, suffixBytes.bytes, 0, suffix);
suffixBytes.length = suffix;
- System.out.println(" write term suffix=" + suffixBytes);
+ System.out.println(" write term suffix=" + brToString(suffixBytes));
}
*/
// For leaf block we write suffix straight
@@ -759,9 +759,9 @@ public final class BlockTreeTermsWriter
/*
if (DEBUG) {
BytesRef suffixBytes = new BytesRef(suffix);
- System.arraycopy(term.term.bytes, prefixLength, suffixBytes.bytes, 0, suffix);
+ System.arraycopy(term.termBytes, prefixLength, suffixBytes.bytes, 0, suffix);
suffixBytes.length = suffix;
- System.out.println(" write term suffix=" + suffixBytes);
+ System.out.println(" write term suffix=" + brToString(suffixBytes));
}
*/
// For non-leaf block we borrow 1 bit to record
@@ -960,6 +960,9 @@ public final class BlockTreeTermsWriter
if (numTerms > 0) {
// if (DEBUG) System.out.println("BTTW: finish prefixStarts=" + Arrays.toString(prefixStarts));
+ // Add empty term to force closing of all final blocks:
+ pushTerm(new BytesRef());
+
// TODO: if pending.size() is already 1 with a non-zero prefix length
// we can save writing a "degenerate" root block, but we have to
// fix all the places that assume the root block's prefix is the empty string: