You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by si...@apache.org on 2011/01/24 18:42:56 UTC

svn commit: r1062897 - /lucene/dev/branches/bulkpostings/lucene/contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java

Author: simonw
Date: Mon Jan 24 17:42:55 2011
New Revision: 1062897

URL: http://svn.apache.org/viewvc?rev=1062897&view=rev
Log:
LUCENE-2723: fixed PositionDeltasReader which returned absolute values instead of deltas

Modified:
    lucene/dev/branches/bulkpostings/lucene/contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java

Modified: lucene/dev/branches/bulkpostings/lucene/contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/lucene/contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java?rev=1062897&r1=1062896&r2=1062897&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/lucene/contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java (original)
+++ lucene/dev/branches/bulkpostings/lucene/contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java Mon Jan 24 17:42:55 2011
@@ -1153,9 +1153,11 @@ public class MemoryIndex implements Seri
         private ArrayIntList positions;
         private int posUpto;
         private int limit;
+        private int lastPos;
 
         public void reset(ArrayIntList positions) {
           posUpto = 0;
+          lastPos = 0;
           this.positions = positions;
           fill();
         }
@@ -1183,8 +1185,11 @@ public class MemoryIndex implements Seri
         @Override
         public int fill() {
           final int chunk = Math.min(buffer.length, positions.size() - posUpto);
+          int absolutePos = 0; // positions contains absolute values but Bulk API expects deltas
           for(int i=0;i<chunk;i++) {
-            buffer[i] = positions.get(posUpto++);
+            absolutePos = positions.get(posUpto++);
+            buffer[i] = absolutePos - lastPos;
+            lastPos = absolutePos;
           }
           return limit = chunk;
         }