diff --git a/lucene/src/java/org/apache/lucene/index/FilterIndexReader.java b/lucene/src/java/org/apache/lucene/index/FilterIndexReader.java index 20a96bdd37f..c9c048a0d3d 100644 --- a/lucene/src/java/org/apache/lucene/index/FilterIndexReader.java +++ b/lucene/src/java/org/apache/lucene/index/FilterIndexReader.java @@ -119,7 +119,7 @@ public class FilterIndexReader extends IndexReader { @Override public Bits getDeletedDocs() throws IOException { - return in.getDeletedDocs(); + return MultiFields.getDeletedDocs(in); } @Override @@ -291,7 +291,18 @@ public class FilterIndexReader extends IndexReader { @Override public IndexReader[] getSequentialSubReaders() { - return in.getSequentialSubReaders(); + return null; + } + + /* Flex API wrappers. */ + @Override + public Fields fields() throws IOException { + return new LegacyFields(this); + } + + @Override + public Terms terms(String field) throws IOException { + return new LegacyTerms(this, field); } /** If the subclass of FilteredIndexReader modifies the diff --git a/lucene/src/test/org/apache/lucene/index/TestFilterIndexReader.java b/lucene/src/test/org/apache/lucene/index/TestFilterIndexReader.java index 00b7c4fc791..eee1ff6a013 100644 --- a/lucene/src/test/org/apache/lucene/index/TestFilterIndexReader.java +++ b/lucene/src/test/org/apache/lucene/index/TestFilterIndexReader.java @@ -113,7 +113,15 @@ public class TestFilterIndexReader extends LuceneTestCase { writer.close(); + //IndexReader reader = new TestReader(IndexReader.open(directory, true)); + RAMDirectory target = new MockRAMDirectory(); + writer = new IndexWriter(target, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer())); IndexReader reader = new TestReader(IndexReader.open(directory, true)); + writer.addIndexes(reader); + writer.close(); + reader.close(); + reader = IndexReader.open(target, true); + assertTrue(reader.isOptimized());