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:21:05 UTC
lucene-solr:master: LUCENE-7652: improve BasePostingsFormatTestCase
with a level 2 ghost test
Repository: lucene-solr
Updated Branches:
refs/heads/master 6ec68ddbe -> 24b5a624b
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/24b5a624
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/24b5a624
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/24b5a624
Branch: refs/heads/master
Commit: 24b5a624bb1c2f0767cc1e0e8c6f10ec999d4a4c
Parents: 6ec68dd
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:19:05 2016 -0500
----------------------------------------------------------------------
.../index/BasePostingsFormatTestCase.java | 45 ++++++++++++++++++++
1 file changed, 45 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/24b5a624/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;