public class ParallelLeafReader extends LeafReader
LeafReader which reads multiple, parallel indexes. Each index
added must have the same number of documents, but typically each contains
different fields. Deletions are taken from the first reader.
Each document contains the union of the fields of all documents
with the same document number. When searching, matches for a
query term are from the first index added that has the field.
This is useful, e.g., with collections that have large fields which change rarely and small fields that change more frequently. The smaller fields may be re-indexed in a new index and both indexes may be searched together.
Warning: It is up to you to make sure all indexes are created and modified the same way. For example, if you add documents to one index, you need to add the same documents in the same order to the other indexes. Failure to do so will result in undefined behavior.
| Modifier and Type | Class and Description |
|---|---|
private class |
ParallelLeafReader.ParallelFields |
LeafReader.CoreClosedListenerIndexReader.ReaderClosedListener| Modifier and Type | Field and Description |
|---|---|
private boolean |
closeSubReaders |
private java.util.Set<LeafReader> |
completeReaderSet |
private FieldInfos |
fieldInfos |
private ParallelLeafReader.ParallelFields |
fields |
private java.util.SortedMap<java.lang.String,LeafReader> |
fieldToReader |
private boolean |
hasDeletions |
private int |
maxDoc |
private int |
numDocs |
private LeafReader[] |
parallelReaders |
private LeafReader[] |
storedFieldsReaders |
private java.util.SortedMap<java.lang.String,LeafReader> |
tvFieldToReader |
| Constructor and Description |
|---|
ParallelLeafReader(boolean closeSubReaders,
LeafReader... readers)
Create a ParallelLeafReader based on the provided
readers.
|
ParallelLeafReader(boolean closeSubReaders,
LeafReader[] readers,
LeafReader[] storedFieldsReaders)
Expert: create a ParallelLeafReader based on the provided
readers and storedFieldReaders; when a document is
loaded, only storedFieldsReaders will be used.
|
ParallelLeafReader(LeafReader... readers)
Create a ParallelLeafReader based on the provided
readers; auto-closes the given readers on
IndexReader.close(). |
| Modifier and Type | Method and Description |
|---|---|
void |
addCoreClosedListener(LeafReader.CoreClosedListener listener)
Expert: adds a CoreClosedListener to this reader's shared core
|
void |
checkIntegrity()
Checks consistency of this reader.
|
protected void |
doClose()
Implements close.
|
void |
document(int docID,
StoredFieldVisitor visitor)
Expert: visits the fields of a stored document, for
custom processing/loading of each field.
|
Fields |
fields()
Returns
Fields for this reader. |
BinaryDocValues |
getBinaryDocValues(java.lang.String field)
Returns
BinaryDocValues for this field, or
null if no BinaryDocValues were indexed for
this field. |
Bits |
getDocsWithField(java.lang.String field)
Returns a
Bits at the size of reader.maxDoc(),
with turned on bits for each docid that does have a value for this field,
or null if no DocValues were indexed for this field. |
FieldInfos |
getFieldInfos()
Get the
FieldInfos describing all fields in
this reader. |
Bits |
getLiveDocs()
Returns the
Bits representing live (not
deleted) docs. |
NumericDocValues |
getNormValues(java.lang.String field)
Returns
NumericDocValues representing norms
for this field, or null if no NumericDocValues
were indexed. |
NumericDocValues |
getNumericDocValues(java.lang.String field)
Returns
NumericDocValues for this field, or
null if no NumericDocValues were indexed for
this field. |
LeafReader[] |
getParallelReaders()
Returns the
LeafReaders that were passed on init. |
PointValues |
getPointValues()
Returns the
PointValues used for numeric or
spatial searches, or null if there are no point fields. |
SortedDocValues |
getSortedDocValues(java.lang.String field)
Returns
SortedDocValues for this field, or
null if no SortedDocValues were indexed for
this field. |
SortedNumericDocValues |
getSortedNumericDocValues(java.lang.String field)
Returns
SortedNumericDocValues for this field, or
null if no SortedNumericDocValues were indexed for
this field. |
SortedSetDocValues |
getSortedSetDocValues(java.lang.String field)
Returns
SortedSetDocValues for this field, or
null if no SortedSetDocValues were indexed for
this field. |
Fields |
getTermVectors(int docID)
Retrieve term vectors for this document, or null if
term vectors were not indexed.
|
int |
maxDoc()
Returns one greater than the largest possible document number.
|
int |
numDocs()
Returns the number of documents in this index.
|
void |
removeCoreClosedListener(LeafReader.CoreClosedListener listener)
Expert: removes a CoreClosedListener from this reader's shared core
|
java.lang.String |
toString() |
addCoreClosedListenerAsReaderClosedListener, docFreq, getContext, getDocCount, getSumDocFreq, getSumTotalTermFreq, postings, postings, removeCoreClosedListenerAsReaderClosedListener, terms, totalTermFreqaddReaderClosedListener, close, decRef, document, document, ensureOpen, equals, getCombinedCoreAndDeletesKey, getCoreCacheKey, getRefCount, getTermVector, hasDeletions, hashCode, incRef, leaves, numDeletedDocs, registerParentReader, removeReaderClosedListener, tryIncRefprivate final FieldInfos fieldInfos
private final ParallelLeafReader.ParallelFields fields
private final LeafReader[] parallelReaders
private final LeafReader[] storedFieldsReaders
private final java.util.Set<LeafReader> completeReaderSet
private final boolean closeSubReaders
private final int maxDoc
private final int numDocs
private final boolean hasDeletions
private final java.util.SortedMap<java.lang.String,LeafReader> fieldToReader
private final java.util.SortedMap<java.lang.String,LeafReader> tvFieldToReader
public ParallelLeafReader(LeafReader... readers) throws java.io.IOException
IndexReader.close().java.io.IOExceptionpublic ParallelLeafReader(boolean closeSubReaders,
LeafReader... readers)
throws java.io.IOException
java.io.IOExceptionpublic ParallelLeafReader(boolean closeSubReaders,
LeafReader[] readers,
LeafReader[] storedFieldsReaders)
throws java.io.IOException
java.io.IOExceptionpublic java.lang.String toString()
toString in class java.lang.Objectpublic void addCoreClosedListener(LeafReader.CoreClosedListener listener)
LeafReaderaddCoreClosedListener in class LeafReaderpublic void removeCoreClosedListener(LeafReader.CoreClosedListener listener)
LeafReaderremoveCoreClosedListener in class LeafReaderpublic FieldInfos getFieldInfos()
FieldInfos describing all fields in
this 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.
getFieldInfos in class LeafReaderpublic Bits getLiveDocs()
LeafReaderBits representing live (not
deleted) docs. A set bit indicates the doc ID has not
been deleted. If this method returns null it means
there are no deleted documents (all documents are
live).
The returned instance has been safely published for
use by multiple threads without additional
synchronization.getLiveDocs in class LeafReaderpublic Fields fields()
LeafReaderFields for this reader.
This method will not return null.fields in class LeafReaderpublic int numDocs()
IndexReadernumDocs in class IndexReaderpublic int maxDoc()
IndexReadermaxDoc in class IndexReaderpublic void document(int docID,
StoredFieldVisitor visitor)
throws java.io.IOException
IndexReaderIndexReader.document(int). If you want to load a subset, use
DocumentStoredFieldVisitor.document in class IndexReaderjava.io.IOExceptionpublic Fields getTermVectors(int docID) throws java.io.IOException
IndexReadergetTermVectors in class IndexReaderjava.io.IOExceptionprotected void doClose()
throws java.io.IOException
IndexReaderdoClose in class IndexReaderjava.io.IOExceptionpublic NumericDocValues getNumericDocValues(java.lang.String field) throws java.io.IOException
LeafReaderNumericDocValues for this field, or
null if no NumericDocValues were indexed for
this field. The returned instance should only be
used by a single thread.getNumericDocValues in class LeafReaderjava.io.IOExceptionpublic BinaryDocValues getBinaryDocValues(java.lang.String field) throws java.io.IOException
LeafReaderBinaryDocValues for this field, or
null if no BinaryDocValues were indexed for
this field. The returned instance should only be
used by a single thread.getBinaryDocValues in class LeafReaderjava.io.IOExceptionpublic SortedDocValues getSortedDocValues(java.lang.String field) throws java.io.IOException
LeafReaderSortedDocValues for this field, or
null if no SortedDocValues were indexed for
this field. The returned instance should only be
used by a single thread.getSortedDocValues in class LeafReaderjava.io.IOExceptionpublic SortedNumericDocValues getSortedNumericDocValues(java.lang.String field) throws java.io.IOException
LeafReaderSortedNumericDocValues for this field, or
null if no SortedNumericDocValues were indexed for
this field. The returned instance should only be
used by a single thread.getSortedNumericDocValues in class LeafReaderjava.io.IOExceptionpublic SortedSetDocValues getSortedSetDocValues(java.lang.String field) throws java.io.IOException
LeafReaderSortedSetDocValues for this field, or
null if no SortedSetDocValues were indexed for
this field. The returned instance should only be
used by a single thread.getSortedSetDocValues in class LeafReaderjava.io.IOExceptionpublic Bits getDocsWithField(java.lang.String field) throws java.io.IOException
LeafReaderBits at the size of reader.maxDoc(),
with turned on bits for each docid that does have a value for this field,
or null if no DocValues were indexed for this field. The
returned instance should only be used by a single threadgetDocsWithField in class LeafReaderjava.io.IOExceptionpublic NumericDocValues getNormValues(java.lang.String field) throws java.io.IOException
LeafReaderNumericDocValues representing norms
for this field, or null if no NumericDocValues
were indexed. The returned instance should only be
used by a single thread.getNormValues in class LeafReaderjava.io.IOExceptionpublic PointValues getPointValues()
LeafReaderPointValues used for numeric or
spatial searches, or null if there are no point fields.getPointValues in class LeafReaderpublic void checkIntegrity()
throws java.io.IOException
LeafReaderNote that this may be costly in terms of I/O, e.g. may involve computing a checksum value against large data files.
checkIntegrity in class LeafReaderjava.io.IOExceptionpublic LeafReader[] getParallelReaders()
LeafReaders that were passed on init.