Skip to content

Make it possible to subclass SegmentReader [LUCENE-2345] #3421

@asfimport

Description

@asfimport

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions