public final class MultiFields extends Fields
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-LeafReader,
instead of using this class.
EMPTY_ARRAY
Constructor and Description |
---|
MultiFields(Fields[] subs,
ReaderSlice[] subSlices)
Expert: construct a new MultiFields instance directly.
|
Modifier and Type | Method and Description |
---|---|
static Fields |
getFields(IndexReader reader)
Returns a single
Fields instance 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 Bits |
getLiveDocs(IndexReader reader)
Returns a single
Bits 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 PostingsEnum |
getTermDocsEnum(IndexReader r,
String field,
BytesRef term)
Returns
PostingsEnum for the specified field and
term. |
static PostingsEnum |
getTermDocsEnum(IndexReader r,
String field,
BytesRef term,
int flags)
Returns
PostingsEnum for the specified field and
term, with control over whether freqs are required. |
static PostingsEnum |
getTermPositionsEnum(IndexReader r,
String field,
BytesRef term)
Returns
PostingsEnum for the specified
field and term. |
static PostingsEnum |
getTermPositionsEnum(IndexReader r,
String field,
BytesRef term,
int flags)
Returns
PostingsEnum for the specified
field and term, with control over whether offsets and payloads are
required. |
static Terms |
getTerms(IndexReader r,
String field)
This method may return null if the field does not exist.
|
Iterator<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(String field)
Get the
Terms for this field. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
forEach, spliterator
public MultiFields(Fields[] subs, ReaderSlice[] subSlices)
public static Fields getFields(IndexReader reader) throws IOException
Fields
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.
IOException
public static Bits getLiveDocs(IndexReader reader)
Bits
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.
public static Terms getTerms(IndexReader r, String field) throws IOException
IOException
public static PostingsEnum getTermDocsEnum(IndexReader r, String field, BytesRef term) throws IOException
PostingsEnum
for the specified field and
term. This will return null if the field or term does
not exist.IOException
public static PostingsEnum getTermDocsEnum(IndexReader r, String field, BytesRef term, int flags) throws IOException
PostingsEnum
for the specified field and
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. See TermsEnum.postings(PostingsEnum,int)
.IOException
public static PostingsEnum getTermPositionsEnum(IndexReader r, String field, BytesRef term) throws IOException
PostingsEnum
for the specified
field and term. This will return null if the field or
term does not exist or positions were not indexed.IOException
getTermPositionsEnum(IndexReader, String, BytesRef, int)
public static PostingsEnum getTermPositionsEnum(IndexReader r, String field, BytesRef term, int flags) throws IOException
PostingsEnum
for the specified
field and 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. See TermsEnum.postings(PostingsEnum,int)
.IOException
public Iterator<String> iterator()
Fields
public Terms terms(String field) throws IOException
Fields
Terms
for this field. This will return
null if the field does not exist.terms
in class Fields
IOException
public int size()
Fields
Fields.iterator()
will return as many field names.public static FieldInfos getMergedFieldInfos(IndexReader 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.
public static Collection<String> getIndexedFields(IndexReader 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.
Copyright © 2000-2017 Apache Software Foundation. All Rights Reserved.