|
@@ -23,6 +23,7 @@ import org.apache.lucene.index.DirectoryReader;
|
|
|
import org.apache.lucene.index.FieldInfo;
|
|
|
import org.apache.lucene.index.FieldInfos;
|
|
|
import org.apache.lucene.index.Fields;
|
|
|
+import org.apache.lucene.index.FilterDirectoryReader;
|
|
|
import org.apache.lucene.index.IndexWriter;
|
|
|
import org.apache.lucene.index.IndexWriterConfig;
|
|
|
import org.apache.lucene.index.LeafReader;
|
|
@@ -35,12 +36,12 @@ import org.apache.lucene.index.SortedDocValues;
|
|
|
import org.apache.lucene.index.SortedNumericDocValues;
|
|
|
import org.apache.lucene.index.SortedSetDocValues;
|
|
|
import org.apache.lucene.index.Term;
|
|
|
+import org.apache.lucene.index.TermState;
|
|
|
import org.apache.lucene.index.Terms;
|
|
|
import org.apache.lucene.index.TermsEnum;
|
|
|
import org.apache.lucene.index.TermsEnum.SeekStatus;
|
|
|
import org.apache.lucene.store.Directory;
|
|
|
import org.apache.lucene.util.BytesRef;
|
|
|
-import org.elasticsearch.core.internal.io.IOUtils;
|
|
|
import org.apache.lucene.util.TestUtil;
|
|
|
import org.apache.lucene.util.automaton.Automata;
|
|
|
import org.apache.lucene.util.automaton.Automaton;
|
|
@@ -55,6 +56,7 @@ import org.elasticsearch.common.collect.ImmutableOpenMap;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.common.xcontent.XContentHelper;
|
|
|
import org.elasticsearch.common.xcontent.XContentType;
|
|
|
+import org.elasticsearch.core.internal.io.IOUtils;
|
|
|
import org.elasticsearch.index.mapper.FieldNamesFieldMapper;
|
|
|
import org.elasticsearch.index.mapper.SourceFieldMapper;
|
|
|
import org.elasticsearch.test.ESTestCase;
|
|
@@ -768,6 +770,18 @@ public class FieldSubsetReaderTests extends ESTestCase {
|
|
|
assertTrue(termsEnum.seekExact(new BytesRef("fieldA")));
|
|
|
assertFalse(termsEnum.seekExact(new BytesRef("fieldB")));
|
|
|
|
|
|
+ // seekExact with TermState
|
|
|
+ // first, collect TermState from underlying reader
|
|
|
+ LeafReader unwrappedReader = FilterDirectoryReader.unwrap(ir).leaves().get(0).reader();
|
|
|
+ Terms unwrappedTerms = unwrappedReader.terms(FieldNamesFieldMapper.NAME);
|
|
|
+ TermsEnum unwrappedTE = unwrappedTerms.iterator();
|
|
|
+ assertTrue(unwrappedTE.seekExact(new BytesRef("fieldB")));
|
|
|
+ TermState termState = unwrappedTE.termState();
|
|
|
+
|
|
|
+ // now try and seekExact with it
|
|
|
+ TermsEnum badEnum = terms.iterator();
|
|
|
+ expectThrows(IllegalStateException.class, () -> badEnum.seekExact(new BytesRef("fieldB"), termState));
|
|
|
+
|
|
|
// seekCeil
|
|
|
termsEnum = terms.iterator();
|
|
|
assertEquals(SeekStatus.FOUND, termsEnum.seekCeil(new BytesRef("fieldA")));
|