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-AtomicReader,
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 DocsEnum |
getTermDocsEnum(IndexReader r,
Bits liveDocs,
String field,
BytesRef term)
Returns
DocsEnum for the specified field &
term. |
static DocsEnum |
getTermDocsEnum(IndexReader r,
Bits liveDocs,
String field,
BytesRef term,
int flags)
Returns
DocsEnum for the specified field &
term, with control over whether freqs are required. |
static DocsAndPositionsEnum |
getTermPositionsEnum(IndexReader r,
Bits liveDocs,
String field,
BytesRef term)
Returns
DocsAndPositionsEnum for the specified
field & term. |
static DocsAndPositionsEnum |
getTermPositionsEnum(IndexReader r,
Bits liveDocs,
String field,
BytesRef term,
int flags)
Returns
DocsAndPositionsEnum for the specified
field & 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. |
static long |
totalTermFreq(IndexReader r,
String field,
BytesRef text)
Returns the total number of occurrences of this term
across all documents (the sum of the freq() for each
doc that has this term).
|
getUniqueTermCount
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 DocsEnum getTermDocsEnum(IndexReader r, Bits liveDocs, String field, BytesRef term) throws IOException
DocsEnum
for the specified field &
term. This will return null if the field or term does
not exist.IOException
public static DocsEnum getTermDocsEnum(IndexReader r, Bits liveDocs, String field, BytesRef term, int flags) throws IOException
DocsEnum
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. See TermsEnum.docs(Bits,DocsEnum,int)
.IOException
public static DocsAndPositionsEnum getTermPositionsEnum(IndexReader r, Bits liveDocs, String field, BytesRef term) throws IOException
DocsAndPositionsEnum
for the specified
field & term. This will return null if the field or
term does not exist or positions were not indexed.public static DocsAndPositionsEnum getTermPositionsEnum(IndexReader r, Bits liveDocs, String field, BytesRef term, int flags) throws IOException
DocsAndPositionsEnum
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. See TermsEnum.docsAndPositions(Bits,DocsAndPositionsEnum,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 long totalTermFreq(IndexReader r, String field, BytesRef text) throws IOException
IOException
TermsEnum.totalTermFreq()
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-2012 Apache Software Foundation. All Rights Reserved.