diff --git a/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsFormat.java index 1554b81..713ee6f 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsFormat.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsFormat.java @@ -5,6 +5,7 @@ import java.util.Set; import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.SegmentInfo; +import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.store.Directory; import org.apache.lucene.store.IOContext; @@ -29,7 +30,7 @@ import org.apache.lucene.store.IOContext; * Controls the format of stored fields */ public abstract class StoredFieldsFormat { - public abstract StoredFieldsReader fieldsReader(Directory directory, SegmentInfo si, FieldInfos fn, IOContext context) throws IOException; + public abstract StoredFieldsReader fieldsReader(SegmentReadState state) throws IOException; public abstract StoredFieldsWriter fieldsWriter(Directory directory, String segment, IOContext context) throws IOException; public abstract void files(SegmentInfo info, Set files) throws IOException; } diff --git a/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsFormat.java index a5449f9..638076d 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsFormat.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsFormat.java @@ -22,6 +22,7 @@ import java.util.Set; import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.SegmentInfo; +import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.store.Directory; import org.apache.lucene.store.IOContext; @@ -29,7 +30,7 @@ import org.apache.lucene.store.IOContext; * Controls the format of term vectors */ public abstract class TermVectorsFormat { - public abstract TermVectorsReader vectorsReader(Directory directory, SegmentInfo segmentInfo, FieldInfos fieldInfos, IOContext context) throws IOException; + public abstract TermVectorsReader vectorsReader(SegmentReadState state) throws IOException; public abstract TermVectorsWriter vectorsWriter(Directory directory, String segment, IOContext context) throws IOException; public abstract void files(SegmentInfo info, Set files) throws IOException; } diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xStoredFieldsFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xStoredFieldsFormat.java index 20a005c..65fd58a 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xStoredFieldsFormat.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xStoredFieldsFormat.java @@ -23,8 +23,8 @@ import java.util.Set; import org.apache.lucene.codecs.StoredFieldsFormat; import org.apache.lucene.codecs.StoredFieldsReader; import org.apache.lucene.codecs.StoredFieldsWriter; -import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.SegmentInfo; +import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.store.Directory; import org.apache.lucene.store.IOContext; @@ -33,9 +33,8 @@ import org.apache.lucene.store.IOContext; class Lucene3xStoredFieldsFormat extends StoredFieldsFormat { @Override - public StoredFieldsReader fieldsReader(Directory directory, SegmentInfo si, - FieldInfos fn, IOContext context) throws IOException { - return new Lucene3xStoredFieldsReader(directory, si, fn, context); + public StoredFieldsReader fieldsReader(SegmentReadState state) throws IOException { + return new Lucene3xStoredFieldsReader(state.dir, state.segmentInfo, state.fieldInfos, state.context); } @Override diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xTermVectorsFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xTermVectorsFormat.java index 58a5a7c..8bf31a6 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xTermVectorsFormat.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xTermVectorsFormat.java @@ -23,8 +23,8 @@ import java.util.Set; import org.apache.lucene.codecs.TermVectorsFormat; import org.apache.lucene.codecs.TermVectorsReader; import org.apache.lucene.codecs.TermVectorsWriter; -import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.SegmentInfo; +import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.store.Directory; import org.apache.lucene.store.IOContext; @@ -38,8 +38,8 @@ import org.apache.lucene.store.IOContext; class Lucene3xTermVectorsFormat extends TermVectorsFormat { @Override - public TermVectorsReader vectorsReader(Directory directory,SegmentInfo segmentInfo, FieldInfos fieldInfos, IOContext context) throws IOException { - return new Lucene3xTermVectorsReader(directory, segmentInfo, fieldInfos, context); + public TermVectorsReader vectorsReader(SegmentReadState state) throws IOException { + return new Lucene3xTermVectorsReader(state.dir, state.segmentInfo, state.fieldInfos, state.context); } @Override diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40StoredFieldsFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40StoredFieldsFormat.java index a57ddd9..6fcac78 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40StoredFieldsFormat.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40StoredFieldsFormat.java @@ -23,8 +23,8 @@ import java.util.Set; import org.apache.lucene.codecs.StoredFieldsFormat; import org.apache.lucene.codecs.StoredFieldsReader; import org.apache.lucene.codecs.StoredFieldsWriter; -import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.SegmentInfo; +import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.store.Directory; import org.apache.lucene.store.IOContext; @@ -32,9 +32,8 @@ import org.apache.lucene.store.IOContext; public class Lucene40StoredFieldsFormat extends StoredFieldsFormat { @Override - public StoredFieldsReader fieldsReader(Directory directory, SegmentInfo si, - FieldInfos fn, IOContext context) throws IOException { - return new Lucene40StoredFieldsReader(directory, si, fn, context); + public StoredFieldsReader fieldsReader(SegmentReadState state) throws IOException { + return new Lucene40StoredFieldsReader(state.dir, state.segmentInfo, state.fieldInfos, state.context); } @Override diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsFormat.java index 8e3f681..d58090f 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsFormat.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsFormat.java @@ -23,16 +23,16 @@ import java.util.Set; import org.apache.lucene.codecs.TermVectorsFormat; import org.apache.lucene.codecs.TermVectorsReader; import org.apache.lucene.codecs.TermVectorsWriter; -import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.SegmentInfo; +import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.store.Directory; import org.apache.lucene.store.IOContext; public class Lucene40TermVectorsFormat extends TermVectorsFormat { @Override - public TermVectorsReader vectorsReader(Directory directory, SegmentInfo segmentInfo, FieldInfos fieldInfos, IOContext context) throws IOException { - return new Lucene40TermVectorsReader(directory, segmentInfo, fieldInfos, context); + public TermVectorsReader vectorsReader(SegmentReadState state) throws IOException { + return new Lucene40TermVectorsReader(state.dir, state.segmentInfo, state.fieldInfos, state.context); } @Override diff --git a/lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextStoredFieldsFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextStoredFieldsFormat.java index 05cc7e7..6585f1e 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextStoredFieldsFormat.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextStoredFieldsFormat.java @@ -23,8 +23,8 @@ import java.util.Set; import org.apache.lucene.codecs.StoredFieldsFormat; import org.apache.lucene.codecs.StoredFieldsReader; import org.apache.lucene.codecs.StoredFieldsWriter; -import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.SegmentInfo; +import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.store.Directory; import org.apache.lucene.store.IOContext; @@ -37,8 +37,8 @@ import org.apache.lucene.store.IOContext; public class SimpleTextStoredFieldsFormat extends StoredFieldsFormat { @Override - public StoredFieldsReader fieldsReader(Directory directory, SegmentInfo si, FieldInfos fn, IOContext context) throws IOException { - return new SimpleTextStoredFieldsReader(directory, si, fn, context); + public StoredFieldsReader fieldsReader(SegmentReadState state) throws IOException { + return new SimpleTextStoredFieldsReader(state.dir, state.segmentInfo, state.fieldInfos, state.context); } @Override diff --git a/lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsFormat.java index 8ec0a86..a96e74e 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsFormat.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsFormat.java @@ -25,6 +25,7 @@ import org.apache.lucene.codecs.TermVectorsReader; import org.apache.lucene.codecs.TermVectorsWriter; import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.SegmentInfo; +import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.store.Directory; import org.apache.lucene.store.IOContext; @@ -37,8 +38,8 @@ import org.apache.lucene.store.IOContext; public class SimpleTextTermVectorsFormat extends TermVectorsFormat { @Override - public TermVectorsReader vectorsReader(Directory directory, SegmentInfo segmentInfo, FieldInfos fieldInfos, IOContext context) throws IOException { - return new SimpleTextTermVectorsReader(directory, segmentInfo, context); + public TermVectorsReader vectorsReader(SegmentReadState state) throws IOException { + return new SimpleTextTermVectorsReader(state.dir, state.segmentInfo, state.context); } @Override diff --git a/lucene/core/src/java/org/apache/lucene/index/SegmentCoreReaders.java b/lucene/core/src/java/org/apache/lucene/index/SegmentCoreReaders.java index 9c15987..fe4e90c 100644 --- a/lucene/core/src/java/org/apache/lucene/index/SegmentCoreReaders.java +++ b/lucene/core/src/java/org/apache/lucene/index/SegmentCoreReaders.java @@ -113,10 +113,10 @@ final class SegmentCoreReaders { norms = codec.normsFormat().docsProducer(segmentReadState); perDocProducer = codec.docValuesFormat().docsProducer(segmentReadState); - fieldsReaderOrig = si.getCodec().storedFieldsFormat().fieldsReader(cfsDir, si, fieldInfos, context); + fieldsReaderOrig = si.getCodec().storedFieldsFormat().fieldsReader(segmentReadState); if (si.getHasVectors()) { // open term vector files only as needed - termVectorsReaderOrig = si.getCodec().termVectorsFormat().vectorsReader(cfsDir, si, fieldInfos, context); + termVectorsReaderOrig = si.getCodec().termVectorsFormat().vectorsReader(segmentReadState); } else { termVectorsReaderOrig = null; } diff --git a/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java b/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java index 2de96b9..920332b 100644 --- a/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java +++ b/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java @@ -35,6 +35,7 @@ import org.apache.lucene.document.FieldType; import org.apache.lucene.document.TextField; import org.apache.lucene.search.DocIdSetIterator; import org.apache.lucene.store.Directory; +import org.apache.lucene.store.IOContext; import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.LuceneTestCase; import org.apache.lucene.util._TestUtil; @@ -47,6 +48,7 @@ public class TestTermVectorsReader extends LuceneTestCase { private String[] testTerms = {"this", "is", "a", "test"}; private int[][] positions = new int[testTerms.length][]; private Directory dir; + private SegmentReadState state; private SegmentInfo seg; private FieldInfos fieldInfos = new FieldInfos(new FieldInfos.FieldNumberBiMap()); private static int TERM_FREQ = 3; @@ -129,6 +131,7 @@ public class TestTermVectorsReader extends LuceneTestCase { writer.close(); fieldInfos = seg.getFieldInfos(); //new FieldInfos(dir, IndexFileNames.segmentFileName(seg.name, "", IndexFileNames.FIELD_INFOS_EXTENSION)); + state = new SegmentReadState(dir, seg, fieldInfos, newIOContext(random), 1); } @Override @@ -200,7 +203,7 @@ public class TestTermVectorsReader extends LuceneTestCase { } public void testReader() throws IOException { - TermVectorsReader reader = Codec.getDefault().termVectorsFormat().vectorsReader(dir, seg, fieldInfos, newIOContext(random)); + TermVectorsReader reader = Codec.getDefault().termVectorsFormat().vectorsReader(state); for (int j = 0; j < 5; j++) { Terms vector = reader.get(j).terms(testFields[0]); assertNotNull(vector); @@ -219,7 +222,7 @@ public class TestTermVectorsReader extends LuceneTestCase { } public void testDocsEnum() throws IOException { - TermVectorsReader reader = Codec.getDefault().termVectorsFormat().vectorsReader(dir, seg, fieldInfos, newIOContext(random)); + TermVectorsReader reader = Codec.getDefault().termVectorsFormat().vectorsReader(state); for (int j = 0; j < 5; j++) { Terms vector = reader.get(j).terms(testFields[0]); assertNotNull(vector); @@ -246,7 +249,7 @@ public class TestTermVectorsReader extends LuceneTestCase { } public void testPositionReader() throws IOException { - TermVectorsReader reader = Codec.getDefault().termVectorsFormat().vectorsReader(dir, seg, fieldInfos, newIOContext(random)); + TermVectorsReader reader = Codec.getDefault().termVectorsFormat().vectorsReader(state); BytesRef[] terms; Terms vector = reader.get(0).terms(testFields[0]); assertNotNull(vector); @@ -301,7 +304,7 @@ public class TestTermVectorsReader extends LuceneTestCase { } public void testOffsetReader() throws IOException { - TermVectorsReader reader = Codec.getDefault().termVectorsFormat().vectorsReader(dir, seg, fieldInfos, newIOContext(random)); + TermVectorsReader reader = Codec.getDefault().termVectorsFormat().vectorsReader(state); Terms vector = reader.get(0).terms(testFields[0]); assertNotNull(vector); TermsEnum termsEnum = vector.iterator(null); @@ -343,7 +346,7 @@ public class TestTermVectorsReader extends LuceneTestCase { public void testBadParams() throws IOException { TermVectorsReader reader = null; try { - reader = Codec.getDefault().termVectorsFormat().vectorsReader(dir, seg, fieldInfos, newIOContext(random)); + reader = Codec.getDefault().termVectorsFormat().vectorsReader(state); //Bad document number, good field number reader.get(50); fail(); @@ -352,7 +355,7 @@ public class TestTermVectorsReader extends LuceneTestCase { } finally { reader.close(); } - reader = Codec.getDefault().termVectorsFormat().vectorsReader(dir, seg, fieldInfos, newIOContext(random)); + reader = Codec.getDefault().termVectorsFormat().vectorsReader(state); //good document number, bad field Terms vector = reader.get(0).terms("f50"); assertNull(vector); diff --git a/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWTermVectorsFormat.java b/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWTermVectorsFormat.java index 4f0a750..5e9c32d 100644 --- a/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWTermVectorsFormat.java +++ b/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWTermVectorsFormat.java @@ -23,6 +23,7 @@ import org.apache.lucene.codecs.TermVectorsReader; import org.apache.lucene.codecs.TermVectorsWriter; import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.SegmentInfo; +import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.store.Directory; import org.apache.lucene.store.IOContext; import org.apache.lucene.util.LuceneTestCase; @@ -35,8 +36,8 @@ class PreFlexRWTermVectorsFormat extends Lucene3xTermVectorsFormat { } @Override - public TermVectorsReader vectorsReader(Directory directory, SegmentInfo segmentInfo, FieldInfos fieldInfos, IOContext context) throws IOException { - return new Lucene3xTermVectorsReader(directory, segmentInfo, fieldInfos, context) { + public TermVectorsReader vectorsReader(SegmentReadState state) throws IOException { + return new Lucene3xTermVectorsReader(state.dir, state.segmentInfo, state.fieldInfos, state.context) { @Override protected boolean sortTermsByUnicode() { // We carefully peek into stack track above us: if