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/11/12 18:08:48 UTC

svn commit: r1201284 - in /lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs: DefaultTermVectorsWriter.java TermVectorsWriter.java

Author: rmuir
Date: Sat Nov 12 17:08:47 2011
New Revision: 1201284

URL: http://svn.apache.org/viewvc?rev=1201284&view=rev
Log:
LUCENE-2621: fix tv offset bugs

Modified:
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsWriter.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsWriter.java?rev=1201284&r1=1201283&r2=1201284&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsWriter.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsWriter.java Sat Nov 12 17:08:47 2011
@@ -168,7 +168,7 @@ public final class DefaultTermVectorsWri
         for (int i = 0; i < offsetIndex; i++) {
           tvf.writeVInt(offsetStartBuffer[i] - lastOffset);
           tvf.writeVInt(offsetEndBuffer[i] - offsetStartBuffer[i]);
-          lastOffset = offsetStartBuffer[i];
+          lastOffset = offsetEndBuffer[i];
         }
       }
     } else if (positions) {
@@ -179,7 +179,7 @@ public final class DefaultTermVectorsWri
       // write offset deltas
       tvf.writeVInt(startOffset - lastOffset);
       tvf.writeVInt(endOffset - startOffset);
-      lastOffset = startOffset;
+      lastOffset = endOffset;
     }
   }
 

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java?rev=1201284&r1=1201283&r2=1201284&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java Sat Nov 12 17:08:47 2011
@@ -109,15 +109,27 @@ public abstract class TermVectorsWriter 
   // TODO: we should probably nuke this and make a more efficient 4.x format
   // PreFlex-RW could then be slow and buffer (its only used in tests...)
   public void addProx(int numProx, DataInput positions, DataInput offsets) throws IOException {
-    int lastPosition = 0;
+    int position = 0;
     int lastOffset = 0;
 
     for (int i = 0; i < numProx; i++) {
-      final int position = positions == null ? -1 : lastPosition + positions.readVInt();
-      final int offset = offsets == null ? -1 : lastOffset + offsets.readVInt();
-      addPosition(position, offset, offsets == null ? -1 : offset + offsets.readVInt());
-      lastPosition = position;
-      lastOffset = offset;
+      final int startOffset;
+      final int endOffset;
+      
+      if (positions == null) {
+        position = -1;
+      } else {
+        position += positions.readVInt();
+      }
+      
+      if (offsets == null) {
+        startOffset = endOffset = -1;
+      } else {
+        startOffset = lastOffset + offsets.readVInt();
+        endOffset = startOffset + offsets.readVInt();
+        lastOffset = endOffset;
+      }
+      addPosition(position, startOffset, endOffset);
     }
   }
   
@@ -153,8 +165,6 @@ public abstract class TermVectorsWriter 
   }
   
   /** Safe (but, slowish) default method to write every vector field in the document */
-  // nocommit: there are bugs in this thing (or the Fields api). 
-  // disable DefaultTermVectorsWriter.merge and run TestStressIndexing2
   protected final void addAllDocVectors(Fields vectors, FieldInfos fieldInfos) throws IOException {
     if (vectors == null) {
       startDocument(0);