I would like the ability to subclass SegmentReader for numerous reasons:
- to capture initialization/close events
- attach custom objects to an instance of a segment reader (caches, statistics, so on and so forth)
- override methods on segment reader as needed
currently this isn't really possible
I propose adding a SegmentReaderFactory that would allow creating custom subclasses of SegmentReader
default implementation would be something like:
public class SegmentReaderFactory {
public SegmentReader get(boolean readOnly) {
return readOnly ? new ReadOnlySegmentReader() : new SegmentReader();
}
public SegmentReader reopen(SegmentReader reader, boolean readOnly) {
return newSegmentReader(readOnly);
}
}
It would then be made possible to pass a SegmentReaderFactory to IndexWriter (for pooled readers) as well as to SegmentReader.get() (DirectoryReader.open, etc)
I could prepare a patch if others think this has merit
Obviously, this API would be "experimental/advanced/will change in future"
Migrated from LUCENE-2345 by Tim Smith, updated May 09 2016
Attachments: LUCENE-2345_3.0.patch, LUCENE-2345_3.0.plugins.patch
I would like the ability to subclass SegmentReader for numerous reasons:
currently this isn't really possible
I propose adding a SegmentReaderFactory that would allow creating custom subclasses of SegmentReader
default implementation would be something like:
It would then be made possible to pass a SegmentReaderFactory to IndexWriter (for pooled readers) as well as to SegmentReader.get() (DirectoryReader.open, etc)
I could prepare a patch if others think this has merit
Obviously, this API would be "experimental/advanced/will change in future"
Migrated from LUCENE-2345 by Tim Smith, updated May 09 2016
Attachments: LUCENE-2345_3.0.patch, LUCENE-2345_3.0.plugins.patch