Class PerFieldPostingsFormat

  • All Implemented Interfaces:
    NamedSPILoader.NamedSPI

    public abstract class PerFieldPostingsFormat
    extends PostingsFormat
    Enables per field postings support.

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

    Files written by each posting format have an additional suffix containing the format name. For example, in a per-field configuration instead of _1.prx filenames would look like _1_Lucene40_0.prx.

    See Also:
    ServiceLoader
    • Field Detail

      • PER_FIELD_FORMAT_KEY

        public static final String PER_FIELD_FORMAT_KEY
        FieldInfo attribute name used to store the format name for each field.
      • PER_FIELD_SUFFIX_KEY

        public static final String PER_FIELD_SUFFIX_KEY
        FieldInfo attribute name used to store the segment suffix name for each field.
    • Constructor Detail

      • PerFieldPostingsFormat

        public PerFieldPostingsFormat()
        Sole constructor.
    • Method Detail

      • fieldsProducer

        public final FieldsProducer fieldsProducer​(SegmentReadState state)
                                            throws IOException
        Description copied from class: PostingsFormat
        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.
        Specified by:
        fieldsProducer in class PostingsFormat
        Throws:
        IOException
      • getPostingsFormatForField

        public abstract PostingsFormat getPostingsFormatForField​(String field)
        Returns the postings format that should be used for writing new segments of field.

        The field to format mapping is written to the index, so this method is only invoked when writing, not when reading.