Class ParallelAtomicReader

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public class ParallelAtomicReader
    extends AtomicReader
    An AtomicReader 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.

    • Constructor Detail

      • ParallelAtomicReader

        public ParallelAtomicReader​(AtomicReader... readers)
                             throws java.io.IOException
        Create a ParallelAtomicReader based on the provided readers; auto-closes the given readers on IndexReader.close().
        Throws:
        java.io.IOException
      • ParallelAtomicReader

        public ParallelAtomicReader​(boolean closeSubReaders,
                                    AtomicReader... readers)
                             throws java.io.IOException
        Create a ParallelAtomicReader based on the provided readers.
        Throws:
        java.io.IOException
      • ParallelAtomicReader

        public ParallelAtomicReader​(boolean closeSubReaders,
                                    AtomicReader[] readers,
                                    AtomicReader[] storedFieldsReaders)
                             throws java.io.IOException
        Expert: create a ParallelAtomicReader based on the provided readers and storedFieldReaders; when a document is loaded, only storedFieldsReaders will be used.
        Throws:
        java.io.IOException
    • Method Detail

      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getLiveDocs

        public Bits getLiveDocs()
        Description copied from class: AtomicReader
        Returns the Bits 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.
        Specified by:
        getLiveDocs in class AtomicReader
      • fields

        public Fields fields()
        Description copied from class: AtomicReader
        Returns Fields for this reader. This method may return null if the reader has no postings.
        Specified by:
        fields in class AtomicReader
      • numDocs

        public int numDocs()
        Description copied from class: IndexReader
        Returns the number of documents in this index.
        Specified by:
        numDocs in class IndexReader
      • maxDoc

        public int maxDoc()
        Description copied from class: IndexReader
        Returns one greater than the largest possible document number. This may be used to, e.g., determine how big to allocate an array which will have an element for every document number in an index.
        Specified by:
        maxDoc in class IndexReader
      • getTermVectors

        public Fields getTermVectors​(int docID)
                              throws java.io.IOException
        Description copied from class: IndexReader
        Retrieve term vectors for this document, or null if term vectors were not indexed. The returned Fields instance acts like a single-document inverted index (the docID will be 0).
        Specified by:
        getTermVectors in class IndexReader
        Throws:
        java.io.IOException
      • getDocsWithField

        public Bits getDocsWithField​(java.lang.String field)
                              throws java.io.IOException
        Description copied from class: AtomicReader
        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. The returned instance should only be used by a single thread
        Specified by:
        getDocsWithField in class AtomicReader
        Throws:
        java.io.IOException