Class MultiFields
- java.lang.Object
-
- org.apache.lucene.index.Fields
-
- org.apache.lucene.index.MultiFields
-
- All Implemented Interfaces:
java.lang.Iterable<java.lang.String>
public final class MultiFields extends Fields
Exposes flex API, merged from flex API of sub-segments. This is useful when you're interacting with anIndexReader
implementation that consists of sequential sub-readers (egDirectoryReader
orMultiReader
).NOTE: for composite readers, you'll get better performance by gathering the sub readers using
IndexReader.getContext()
to get the atomic leaves and then operate per-AtomicReader, instead of using this class.
-
-
Field Summary
-
Fields inherited from class org.apache.lucene.index.Fields
EMPTY_ARRAY
-
-
Constructor Summary
Constructors Constructor Description MultiFields(Fields[] subs, ReaderSlice[] subSlices)
Expert: construct a new MultiFields instance directly.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static Fields
getFields(IndexReader reader)
Returns a singleFields
instance for this reader, merging fields/terms/docs/positions on the fly.static java.util.Collection<java.lang.String>
getIndexedFields(IndexReader reader)
Call this to get the (merged) FieldInfos representing the set of indexed fields only for a composite reader.static Bits
getLiveDocs(IndexReader reader)
Returns a singleBits
instance for this reader, merging live Documents on the fly.static FieldInfos
getMergedFieldInfos(IndexReader reader)
Call this to get the (merged) FieldInfos for a composite reader.static DocsEnum
getTermDocsEnum(IndexReader r, Bits liveDocs, java.lang.String field, BytesRef term)
ReturnsDocsEnum
for the specified field & term.static DocsEnum
getTermDocsEnum(IndexReader r, Bits liveDocs, java.lang.String field, BytesRef term, int flags)
ReturnsDocsEnum
for the specified field & term, with control over whether freqs are required.static DocsAndPositionsEnum
getTermPositionsEnum(IndexReader r, Bits liveDocs, java.lang.String field, BytesRef term)
ReturnsDocsAndPositionsEnum
for the specified field & term.static DocsAndPositionsEnum
getTermPositionsEnum(IndexReader r, Bits liveDocs, java.lang.String field, BytesRef term, int flags)
ReturnsDocsAndPositionsEnum
for the specified field & term, with control over whether offsets and payloads are required.static Terms
getTerms(IndexReader r, java.lang.String field)
This method may return null if the field does not exist.java.util.Iterator<java.lang.String>
iterator()
Returns an iterator that will step through all fields names.int
size()
Returns the number of fields or -1 if the number of distinct field names is unknown.Terms
terms(java.lang.String field)
Get theTerms
for this field.-
Methods inherited from class org.apache.lucene.index.Fields
getUniqueTermCount
-
-
-
-
Constructor Detail
-
MultiFields
public MultiFields(Fields[] subs, ReaderSlice[] subSlices)
Expert: construct a new MultiFields instance directly.
-
-
Method Detail
-
getFields
public static Fields getFields(IndexReader reader) throws java.io.IOException
Returns a singleFields
instance for this reader, merging fields/terms/docs/positions on the fly. This method will return null if the reader has no postings.NOTE: this is a slow way to access postings. It's better to get the sub-readers and iterate through them yourself.
- Throws:
java.io.IOException
-
getLiveDocs
public static Bits getLiveDocs(IndexReader reader)
Returns a singleBits
instance for this reader, merging live Documents on the fly. This method will return null if the reader has no deletions.NOTE: this is a very slow way to access live docs. For example, each Bits access will require a binary search. It's better to get the sub-readers and iterate through them yourself.
-
getTerms
public static Terms getTerms(IndexReader r, java.lang.String field) throws java.io.IOException
This method may return null if the field does not exist.- Throws:
java.io.IOException
-
getTermDocsEnum
public static DocsEnum getTermDocsEnum(IndexReader r, Bits liveDocs, java.lang.String field, BytesRef term) throws java.io.IOException
ReturnsDocsEnum
for the specified field & term. This will return null if the field or term does not exist.- Throws:
java.io.IOException
-
getTermDocsEnum
public static DocsEnum getTermDocsEnum(IndexReader r, Bits liveDocs, java.lang.String field, BytesRef term, int flags) throws java.io.IOException
ReturnsDocsEnum
for the specified field & term, with control over whether freqs are required. Some codecs may be able to optimize their implementation when freqs are not required. This will return null if the field or term does not exist. SeeTermsEnum.docs(Bits,DocsEnum,int)
.- Throws:
java.io.IOException
-
getTermPositionsEnum
public static DocsAndPositionsEnum getTermPositionsEnum(IndexReader r, Bits liveDocs, java.lang.String field, BytesRef term) throws java.io.IOException
ReturnsDocsAndPositionsEnum
for the specified field & term. This will return null if the field or term does not exist or positions were not indexed.- Throws:
java.io.IOException
- See Also:
getTermPositionsEnum(IndexReader, Bits, String, BytesRef, int)
-
getTermPositionsEnum
public static DocsAndPositionsEnum getTermPositionsEnum(IndexReader r, Bits liveDocs, java.lang.String field, BytesRef term, int flags) throws java.io.IOException
ReturnsDocsAndPositionsEnum
for the specified field & term, with control over whether offsets and payloads are required. Some codecs may be able to optimize their implementation when offsets and/or payloads are not required. This will return null if the field or term does not exist or positions were not indexed. SeeTermsEnum.docsAndPositions(Bits,DocsAndPositionsEnum,int)
.- Throws:
java.io.IOException
-
iterator
public java.util.Iterator<java.lang.String> iterator()
Description copied from class:Fields
Returns an iterator that will step through all fields names. This will not return null.
-
terms
public Terms terms(java.lang.String field) throws java.io.IOException
Description copied from class:Fields
Get theTerms
for this field. This will return null if the field does not exist.
-
size
public int size()
Description copied from class:Fields
Returns the number of fields or -1 if the number of distinct field names is unknown. If >= 0,Fields.iterator()
will return as many field names.
-
getMergedFieldInfos
public static FieldInfos getMergedFieldInfos(IndexReader reader)
Call this to get the (merged) FieldInfos for a composite reader.NOTE: the returned field numbers will likely not correspond to the actual field numbers in the underlying readers, and codec metadata (
FieldInfo.getAttribute(String)
will be unavailable.
-
getIndexedFields
public static java.util.Collection<java.lang.String> getIndexedFields(IndexReader reader)
Call this to get the (merged) FieldInfos representing the set of indexed fields only for a composite reader.NOTE: the returned field numbers will likely not correspond to the actual field numbers in the underlying readers, and codec metadata (
FieldInfo.getAttribute(String)
will be unavailable.
-
-