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 2016/11/16 10:18:54 UTC

lucene-solr:branch_6x: LUCENE-7652: improve BasePostingsFormatTestCase with a level 2 ghost test

Repository: lucene-solr
Updated Branches:
  refs/heads/branch_6x 42459a036 -> 348854638


LUCENE-7652: improve BasePostingsFormatTestCase with a level 2 ghost test


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/34885463
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/34885463
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/34885463

Branch: refs/heads/branch_6x
Commit: 348854638dc7bb89f0dd601e8451a827e0e8e4c6
Parents: 42459a0
Author: Mike McCandless <mi...@apache.org>
Authored: Wed Nov 16 05:18:39 2016 -0500
Committer: Mike McCandless <mi...@apache.org>
Committed: Wed Nov 16 05:18:39 2016 -0500

----------------------------------------------------------------------
 .../index/BasePostingsFormatTestCase.java       | 45 ++++++++++++++++++++
 1 file changed, 45 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/34885463/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java
index d6cf1e5..1155a73 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java
@@ -40,6 +40,8 @@ import org.apache.lucene.document.StringField;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.TermsEnum.SeekStatus;
 import org.apache.lucene.search.DocIdSetIterator;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IOContext;
 import org.apache.lucene.util.BytesRef;
@@ -312,6 +314,49 @@ public abstract class BasePostingsFormatTestCase extends BaseIndexFileFormatTest
     dir.close();
   }
 
+  // tests that level 2 ghost fields still work
+  public void testLevel2Ghosts() throws Exception {
+    Directory dir = newDirectory();
+
+    Analyzer analyzer = new MockAnalyzer(random());
+    IndexWriterConfig iwc = newIndexWriterConfig(null);
+    iwc.setCodec(getCodec());
+    iwc.setMergePolicy(newLogMergePolicy());
+    IndexWriter iw = new IndexWriter(dir, iwc);
+
+    Document document = new Document();
+    document.add(new StringField("id", "0", Field.Store.NO));
+    document.add(new StringField("suggest_field", "apples", Field.Store.NO));
+    iw.addDocument(document);
+    // need another document so whole segment isn't deleted
+    iw.addDocument(new Document());
+    iw.commit();
+
+    document = new Document();
+    document.add(new StringField("id", "1", Field.Store.NO));
+    document.add(new StringField("suggest_field2", "apples", Field.Store.NO));
+    iw.addDocument(document);
+    iw.commit();
+
+    iw.deleteDocuments(new Term("id", "0"));
+    // first force merge creates a level 1 ghost field
+    iw.forceMerge(1);
+    
+    // second force merge creates a level 2 ghost field, causing MultiFields to include "suggest_field" in its iteration, yet a null Terms is returned (no documents have
+    // this field anymore)
+    iw.addDocument(new Document());
+    iw.forceMerge(1);
+
+    DirectoryReader reader = DirectoryReader.open(iw);
+    IndexSearcher indexSearcher = new IndexSearcher(reader);
+
+    assertEquals(1, indexSearcher.count(new TermQuery(new Term("id", "1"))));
+
+    reader.close();
+    iw.close();
+    dir.close();
+  }
+
   private static class TermFreqs {
     long totalTermFreq;
     int docFreq;