Class PostingsFormat
- java.lang.Object
-
- org.apache.lucene.codecs.PostingsFormat
-
- All Implemented Interfaces:
NamedSPILoader.NamedSPI
- Direct Known Subclasses:
BlockTreeOrdsPostingsFormat,BloomFilteringPostingsFormat,CompletionPostingsFormat,DirectPostingsFormat,FSTPostingsFormat,IDVersionPostingsFormat,Lucene50PostingsFormat,Lucene84PostingsFormat,PerFieldPostingsFormat,SimpleTextPostingsFormat,UniformSplitPostingsFormat
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 viaforName(String). This method uses Java'sService 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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classPostingsFormat.HolderThis static holder class prevents classloading deadlock by delaying init of postings formats until needed.
-
Field Summary
Fields Modifier and Type Field Description static PostingsFormat[]EMPTYZero-lengthPostingsFormatarray.private java.lang.StringnameUnique name that's used to retrieve this format when reading the index.
-
Constructor Summary
Constructors Modifier Constructor Description protectedPostingsFormat(java.lang.String name)Creates a new postings format.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static java.util.Set<java.lang.String>availablePostingsFormats()returns a list of all available format namesabstract FieldsConsumerfieldsConsumer(SegmentWriteState state)Writes a new segmentabstract FieldsProducerfieldsProducer(SegmentReadState state)Reads a segment.static PostingsFormatforName(java.lang.String name)looks up a format by namejava.lang.StringgetName()Returns this posting format's namestatic voidreloadPostingsFormats(java.lang.ClassLoader classloader)Reloads the postings format list from the givenClassLoader.java.lang.StringtoString()
-
-
-
Field Detail
-
EMPTY
public static final PostingsFormat[] EMPTY
Zero-lengthPostingsFormatarray.
-
name
private final java.lang.String name
Unique name that's used to retrieve this format when reading the index.
-
-
Constructor Detail
-
PostingsFormat
protected PostingsFormat(java.lang.String name)
Creates a new postings format.The provided name will be written into the index segment in some configurations (such as when using
PerFieldPostingsFormat): in such configurations, for the segment to be read this class should be registered with Java's SPI mechanism (registered in META-INF/ of your jar file, etc).- Parameters:
name- must be all ascii alphanumeric, and less than 128 characters in length.
-
-
Method Detail
-
getName
public final java.lang.String getName()
Returns this posting format's name- Specified by:
getNamein interfaceNamedSPILoader.NamedSPI
-
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:
toStringin classjava.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 givenClassLoader. 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!
-
-