You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2011/05/18 20:30:56 UTC
svn commit: r1124369 - in /lucene/dev/branches/branch_3x: ./ lucene/
lucene/CHANGES.txt lucene/backwards/
lucene/src/java/org/apache/lucene/index/SegmentReader.java solr/
Author: rmuir
Date: Wed May 18 18:30:55 2011
New Revision: 1124369
URL: http://svn.apache.org/viewvc?rev=1124369&view=rev
Log:
LUCENE-3012: if you use setNorm, lucene writes a headerless separate norms file
Modified:
lucene/dev/branches/branch_3x/ (props changed)
lucene/dev/branches/branch_3x/lucene/ (props changed)
lucene/dev/branches/branch_3x/lucene/CHANGES.txt
lucene/dev/branches/branch_3x/lucene/backwards/ (props changed)
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentReader.java
lucene/dev/branches/branch_3x/solr/ (props changed)
Modified: lucene/dev/branches/branch_3x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/CHANGES.txt?rev=1124369&r1=1124368&r2=1124369&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_3x/lucene/CHANGES.txt Wed May 18 18:30:55 2011
@@ -102,6 +102,9 @@ Bug fixes
* LUCENE-3068: sloppy phrase query failed to match valid documents when multiple
query terms had same position in the query. (Doron Cohen)
+
+* LUCENE-3012: Lucene writes the header now for separate norm files (*.sNNN)
+ (Robert Muir)
Test Cases
Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentReader.java?rev=1124369&r1=1124368&r2=1124369&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentReader.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentReader.java Wed May 18 18:30:55 2011
@@ -38,6 +38,7 @@ import org.apache.lucene.store.IndexInpu
import org.apache.lucene.store.IndexOutput;
import org.apache.lucene.util.BitVector;
import org.apache.lucene.util.CloseableThreadLocal;
+import org.apache.lucene.util.StringHelper;
/**
* @lucene.experimental
@@ -530,6 +531,7 @@ public class SegmentReader extends Index
boolean success = false;
try {
try {
+ out.writeBytes(SegmentMerger.NORMS_HEADER, 0, SegmentMerger.NORMS_HEADER.length);
out.writeBytes(bytes, maxDoc());
} finally {
out.close();
@@ -1124,8 +1126,20 @@ public class SegmentReader extends Index
// If this were to change in the future, a clone could be done here.
normInput = singleNormStream;
} else {
- normSeek = 0;
normInput = d.openInput(fileName);
+ // if the segment was created in 3.2 or after, we wrote the header for sure,
+ // and don't need to do the sketchy file size check. otherwise, we check
+ // if the size is exactly equal to maxDoc to detect a headerless file.
+ // NOTE: remove this check in Lucene 5.0!
+ String version = si.getVersion();
+ final boolean isUnversioned =
+ (version == null || StringHelper.getVersionComparator().compare(version, "3.2") < 0)
+ && normInput.length() == maxDoc();
+ if (isUnversioned) {
+ normSeek = 0;
+ } else {
+ normSeek = SegmentMerger.NORMS_HEADER.length;
+ }
}
norms.put(fi.name, new Norm(normInput, fi.number, normSeek));