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 2015/04/07 13:39:44 UTC

svn commit: r1671816 - in /lucene/dev/branches/branch_5x: ./ lucene/ lucene/memory/ lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndexAgainstRAMDir.java

Author: rmuir
Date: Tue Apr  7 11:39:43 2015
New Revision: 1671816

URL: http://svn.apache.org/r1671816
Log:
LUCENE-6404: fix 0-length payload semantics in MemoryIndex

Modified:
    lucene/dev/branches/branch_5x/   (props changed)
    lucene/dev/branches/branch_5x/lucene/   (props changed)
    lucene/dev/branches/branch_5x/lucene/memory/   (props changed)
    lucene/dev/branches/branch_5x/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
    lucene/dev/branches/branch_5x/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndexAgainstRAMDir.java

Modified: lucene/dev/branches/branch_5x/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java?rev=1671816&r1=1671815&r2=1671816&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java (original)
+++ lucene/dev/branches/branch_5x/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java Tue Apr  7 11:39:43 2015
@@ -480,7 +480,12 @@ public class MemoryIndex {
         }
         if (storePayloads) {
           final BytesRef payload = payloadAtt.getPayload();
-          int pIndex = payload == null ? -1 : payloadsBytesRefs.append(payload);
+          final int pIndex;
+          if (payload == null || payload.length == 0) {
+            pIndex = -1;
+          } else {
+            pIndex = payloadsBytesRefs.append(payload);
+          }
           postingsWriter.writeInt(pIndex);
         }
         sliceArray.end[ord] = postingsWriter.getCurrentOffset();

Modified: lucene/dev/branches/branch_5x/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndexAgainstRAMDir.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndexAgainstRAMDir.java?rev=1671816&r1=1671815&r2=1671816&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndexAgainstRAMDir.java (original)
+++ lucene/dev/branches/branch_5x/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndexAgainstRAMDir.java Tue Apr  7 11:39:43 2015
@@ -161,6 +161,7 @@ public class TestMemoryIndexAgainstRAMDi
     memory.addField("term", termField.toString(), analyzer);
     
     LeafReader reader = (LeafReader) memory.createSearcher().getIndexReader();
+    TestUtil.checkReader(reader);
     DirectoryReader competitor = DirectoryReader.open(ramdir);
     duellReaders(competitor, reader);
     IOUtils.close(reader, competitor);
@@ -318,6 +319,7 @@ public class TestMemoryIndexAgainstRAMDi
     MemoryIndex memory = new MemoryIndex(random().nextBoolean(), false, random().nextInt(50) * 1024 * 1024);
     memory.addField("foo", "bar", analyzer);
     LeafReader reader = (LeafReader) memory.createSearcher().getIndexReader();
+    TestUtil.checkReader(reader);
     PostingsEnum disi = TestUtil.docs(random(), reader, "foo", new BytesRef("bar"), null, null, PostingsEnum.NONE);
     int docid = disi.docID();
     assertEquals(-1, docid);
@@ -352,6 +354,7 @@ public class TestMemoryIndexAgainstRAMDi
     for (int i = 0; i < numIters; i++) { // check reuse
       memory.addField("foo", "bar", analyzer);
       LeafReader reader = (LeafReader) memory.createSearcher().getIndexReader();
+      TestUtil.checkReader(reader);
       assertEquals(1, reader.terms("foo").getSumTotalTermFreq());
       PostingsEnum disi = reader.postings(new Term("foo", "bar"), PostingsEnum.ALL);
       int docid = disi.docID();
@@ -383,6 +386,7 @@ public class TestMemoryIndexAgainstRAMDi
 
     // This throws an NPE
     assertEquals(0, mindex.search(wrappedquery), 0.00001f);
+    TestUtil.checkReader(mindex.createSearcher().getIndexReader());
   }
     
   // LUCENE-3831
@@ -395,6 +399,7 @@ public class TestMemoryIndexAgainstRAMDi
 
     // This passes though
     assertEquals(0, mindex.search(wrappedquery), 0.00001f);
+    TestUtil.checkReader(mindex.createSearcher().getIndexReader());
   }
   
   public void testSameFieldAddedMultipleTimes() throws IOException {
@@ -403,6 +408,7 @@ public class TestMemoryIndexAgainstRAMDi
     mindex.addField("field", "the quick brown fox", mockAnalyzer);
     mindex.addField("field", "jumps over the", mockAnalyzer);
     LeafReader reader = (LeafReader) mindex.createSearcher().getIndexReader();
+    TestUtil.checkReader(reader);
     assertEquals(7, reader.terms("field").getSumTotalTermFreq());
     PhraseQuery query = new PhraseQuery();
     query.add(new Term("field", "fox"));
@@ -415,6 +421,7 @@ public class TestMemoryIndexAgainstRAMDi
     assertEquals(0, mindex.search(query), 0.00001f);
     query.setSlop(10);
     assertTrue("posGap" + mockAnalyzer.getPositionIncrementGap("field") , mindex.search(query) > 0.0001);
+    TestUtil.checkReader(mindex.createSearcher().getIndexReader());
   }
   
   public void testNonExistentField() throws IOException {
@@ -422,6 +429,7 @@ public class TestMemoryIndexAgainstRAMDi
     MockAnalyzer mockAnalyzer = new MockAnalyzer(random());
     mindex.addField("field", "the quick brown fox", mockAnalyzer);
     LeafReader reader = (LeafReader) mindex.createSearcher().getIndexReader();
+    TestUtil.checkReader(reader);
     assertNull(reader.getNumericDocValues("not-in-index"));
     assertNull(reader.getNormValues("not-in-index"));
     assertNull(reader.postings(new Term("not-in-index", "foo")));
@@ -456,6 +464,7 @@ public class TestMemoryIndexAgainstRAMDi
       }
       DirectoryReader competitor = DirectoryReader.open(dir);
       LeafReader memIndexReader= (LeafReader) memory.createSearcher().getIndexReader();
+      TestUtil.checkReader(memIndexReader);
       duellReaders(competitor, memIndexReader);
       IOUtils.close(competitor, memIndexReader);
       memory.reset();
@@ -471,6 +480,7 @@ public class TestMemoryIndexAgainstRAMDi
     IndexSearcher searcher = memory.createSearcher();
     TopDocs docs = searcher.search(new TermQuery(new Term("foo", "")), 10);
     assertEquals(1, docs.totalHits);
+    TestUtil.checkReader(searcher.getIndexReader());
   }
 
   public void testDuelMemoryIndexCoreDirectoryWithArrayField() throws Exception {
@@ -507,6 +517,7 @@ public class TestMemoryIndexAgainstRAMDi
     //compare term vectors
     Terms ramTv = reader.getTermVector(0, field_name);
     IndexReader memIndexReader = memIndex.createSearcher().getIndexReader();
+    TestUtil.checkReader(memIndexReader);
     Terms memTv = memIndexReader.getTermVector(0, field_name);
 
     compareTermVectors(ramTv, memTv, field_name);