Class PostingsFormat

  • All Implemented Interfaces:
    NamedSPILoader.NamedSPI
    Direct Known Subclasses:
    Lucene40PostingsFormat, Lucene41PostingsFormat, PerFieldPostingsFormat

    public abstract class PostingsFormat
    extends java.lang.Object
    implements NamedSPILoader.NamedSPI
    Encodes/decodes terms, postings, and proximity data.

    Note, when extending this class, the name (getName()) may written into the index in certain configurations. In order for the segment to be read, the name must resolve to your implementation via forName(String). This method uses Java's Service Provider Interface (SPI) to resolve format names.

    If you implement your own format, make sure that it has a no-arg constructor so SPI can load it.

    See Also:
    ServiceLoader
    • Field Detail

      • EMPTY

        public static final PostingsFormat[] EMPTY
        Zero-length PostingsFormat array.
    • Method Detail

      • fieldsConsumer

        public abstract FieldsConsumer fieldsConsumer​(SegmentWriteState state)
                                               throws java.io.IOException
        Writes a new segment
        Throws:
        java.io.IOException
      • fieldsProducer

        public abstract FieldsProducer fieldsProducer​(SegmentReadState state)
                                               throws java.io.IOException
        Reads a segment. NOTE: by the time this call returns, it must hold open any files it will need to use; else, those files may be deleted. Additionally, required files may be deleted during the execution of this call before there is a chance to open them. Under these circumstances an IOException should be thrown by the implementation. IOExceptions are expected and will automatically cause a retry of the segment opening logic with the newly revised segments.
        Throws:
        java.io.IOException
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • forName

        public static PostingsFormat forName​(java.lang.String name)
        looks up a format by name
      • availablePostingsFormats

        public static java.util.Set<java.lang.String> availablePostingsFormats()
        returns a list of all available format names
      • reloadPostingsFormats

        public static void reloadPostingsFormats​(java.lang.ClassLoader classloader)
        Reloads the postings format list from the given ClassLoader. Changes to the postings formats are visible after the method ends, all iterators (availablePostingsFormats(),...) stay consistent.

        NOTE: Only new postings formats are added, existing ones are never removed or replaced.

        This method is expensive and should only be called for discovery of new postings formats on the given classpath/classloader!