Class MultiFields
IndexReader implementation that consists of sequential
sub-readers (eg DirectoryReader or MultiReader).
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
ConstructorsConstructorDescriptionMultiFields(Fields[] subs, ReaderSlice[] subSlices) Expert: construct a new MultiFields instance directly. -
Method Summary
Modifier and TypeMethodDescriptionstatic FieldsgetFields(IndexReader reader) Returns a singleFieldsinstance for this reader, merging fields/terms/docs/positions on the fly.static Collection<String> getIndexedFields(IndexReader reader) Call this to get the (merged) FieldInfos representing the set of indexed fields only for a composite reader.static BitsgetLiveDocs(IndexReader reader) Returns a singleBitsinstance for this reader, merging live Documents on the fly.static FieldInfosgetMergedFieldInfos(IndexReader reader) Call this to get the (merged) FieldInfos for a composite reader.static DocsEnumgetTermDocsEnum(IndexReader r, Bits liveDocs, String field, BytesRef term) ReturnsDocsEnumfor the specified field invalid input: '&' term.static DocsEnumgetTermDocsEnum(IndexReader r, Bits liveDocs, String field, BytesRef term, int flags) ReturnsDocsEnumfor the specified field invalid input: '&' term, with control over whether freqs are required.static DocsAndPositionsEnumgetTermPositionsEnum(IndexReader r, Bits liveDocs, String field, BytesRef term) ReturnsDocsAndPositionsEnumfor the specified field invalid input: '&' term.static DocsAndPositionsEnumgetTermPositionsEnum(IndexReader r, Bits liveDocs, String field, BytesRef term, int flags) ReturnsDocsAndPositionsEnumfor the specified field invalid input: '&' term, with control over whether offsets and payloads are required.static TermsgetTerms(IndexReader r, String field) This method may return null if the field does not exist.iterator()Returns an iterator that will step through all fields names.intsize()Returns the number of fields or -1 if the number of distinct field names is unknown.Get theTermsfor this field.Methods inherited from class org.apache.lucene.index.Fields
getUniqueTermCountMethods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
MultiFields
Expert: construct a new MultiFields instance directly.
-
-
Method Details
-
getFields
Returns a singleFieldsinstance 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:
IOException
-
getLiveDocs
Returns a singleBitsinstance 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
This method may return null if the field does not exist.- Throws:
IOException
-
getTermDocsEnum
public static DocsEnum getTermDocsEnum(IndexReader r, Bits liveDocs, String field, BytesRef term) throws IOException ReturnsDocsEnumfor the specified field invalid input: '&' term. This will return null if the field or term does not exist.- Throws:
IOException
-
getTermDocsEnum
public static DocsEnum getTermDocsEnum(IndexReader r, Bits liveDocs, String field, BytesRef term, int flags) throws IOException ReturnsDocsEnumfor the specified field invalid input: '&' 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:
IOException
-
getTermPositionsEnum
public static DocsAndPositionsEnum getTermPositionsEnum(IndexReader r, Bits liveDocs, String field, BytesRef term) throws IOException ReturnsDocsAndPositionsEnumfor the specified field invalid input: '&' term. This will return null if the field or term does not exist or positions were not indexed.- Throws:
IOException- See Also:
-
getTermPositionsEnum
public static DocsAndPositionsEnum getTermPositionsEnum(IndexReader r, Bits liveDocs, String field, BytesRef term, int flags) throws IOException ReturnsDocsAndPositionsEnumfor the specified field invalid input: '&' 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:
IOException
-
iterator
Description copied from class:FieldsReturns an iterator that will step through all fields names. This will not return null. -
terms
Description copied from class:FieldsGet theTermsfor this field. This will return null if the field does not exist.- Specified by:
termsin classFields- Throws:
IOException
-
size
public int size()Description copied from class:FieldsReturns 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
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
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.
-