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/02 22:58:51 UTC

svn commit: r981687 - in /lucene/dev/trunk/lucene/src/java/org/apache/lucene/index: FieldsReader.java SegmentMerger.java TermVectorsReader.java

Author: mikemccand
Date: Mon Aug  2 20:58:51 2010
New Revision: 981687

URL: http://svn.apache.org/viewvc?rev=981687&view=rev
Log:
revert 981659: apparently the code was not quite dead yet

Modified:
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/FieldsReader.java
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentMerger.java
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/TermVectorsReader.java

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/FieldsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/FieldsReader.java?rev=981687&r1=981686&r2=981687&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/FieldsReader.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/FieldsReader.java Mon Aug  2 20:58:51 2010
@@ -186,6 +186,12 @@ final class FieldsReader implements Clon
     indexStream.seek(FORMAT_SIZE + (docID + docStoreOffset) * 8L);
   }
 
+  boolean canReadRawDocs() {
+    // Since we currently only support >3.0 format anymore, always return true!
+    // I leave this method in because it may help for later format changes.
+    return true;
+  }
+
   final Document doc(int n, FieldSelector fieldSelector) throws CorruptIndexException, IOException {
     seekIndex(n);
     long position = indexStream.readLong();

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentMerger.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentMerger.java?rev=981687&r1=981686&r2=981687&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentMerger.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentMerger.java Mon Aug  2 20:58:51 2010
@@ -321,7 +321,7 @@ final class SegmentMerger {
           FieldsReader matchingFieldsReader = null;
           if (matchingSegmentReader != null) {
             final FieldsReader fieldsReader = matchingSegmentReader.getFieldsReader();
-            if (fieldsReader != null) {
+            if (fieldsReader != null && fieldsReader.canReadRawDocs()) {            
               matchingFieldsReader = fieldsReader;
             }
           }
@@ -453,7 +453,7 @@ final class SegmentMerger {
           TermVectorsReader vectorsReader = matchingSegmentReader.getTermVectorsReaderOrig();
 
           // If the TV* files are an older format then they cannot read raw docs:
-          if (vectorsReader != null) {
+          if (vectorsReader != null && vectorsReader.canReadRawDocs()) {
             matchingVectorsReader = vectorsReader;
           }
         }

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/TermVectorsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/TermVectorsReader.java?rev=981687&r1=981686&r2=981687&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/TermVectorsReader.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/TermVectorsReader.java Mon Aug  2 20:58:51 2010
@@ -135,6 +135,10 @@ class TermVectorsReader implements Clone
     tvx.seek((docNum + docStoreOffset) * 16L + FORMAT_SIZE);
   }
 
+  boolean canReadRawDocs() {
+    return format >= FORMAT_UTF8_LENGTH_IN_BYTES;
+  }
+
   /** Retrieve the length (in bytes) of the tvd and tvf
    *  entries for the next numDocs starting with
    *  startDocID.  This is used for bulk copying when
@@ -149,6 +153,11 @@ class TermVectorsReader implements Clone
       return;
     }
 
+    // SegmentMerger calls canReadRawDocs() first and should
+    // not call us if that returns false.
+    if (format < FORMAT_UTF8_LENGTH_IN_BYTES)
+      throw new IllegalStateException("cannot read raw docs with older term vector formats");
+
     seekTvx(startDocID);
 
     long tvdPosition = tvx.readLong();