Class BaseCompositeReader<R extends IndexReader>

All Implemented Interfaces:
Closeable, AutoCloseable
Direct Known Subclasses:
DirectoryReader, MultiReader, ParallelCompositeReader

public abstract class BaseCompositeReader<R extends IndexReader> extends CompositeReader
Base class for implementing CompositeReaders based on an array of sub-readers. The implementing class has to add code for correctly refcounting and closing the sub-readers.

User code will most likely use MultiReader to build a composite reader on a set of sub-readers (like several DirectoryReaders).

For efficiency, in this API documents are often referred to via document numbers, non-negative integers which each name a unique document in the index. These document numbers are ephemeral -- they may change as documents are added to and deleted from an index. Clients should thus not rely on a given document having the same number between sessions.

NOTE: IndexReader instances are completely thread safe, meaning multiple threads can call any of its methods, concurrently. If your application requires external synchronization, you should not synchronize on the IndexReader instance; use your own (non-Lucene) objects instead.

See Also:
NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
  • Field Details

    • subReadersSorter

      protected final Comparator<R extends IndexReader> subReadersSorter
      A comparator for sorting sub-readers
  • Constructor Details

    • BaseCompositeReader

      protected BaseCompositeReader(R[] subReaders, Comparator<R> subReadersSorter) throws IOException
      Constructs a BaseCompositeReader on the given subReaders.
      Parameters:
      subReaders - the wrapped sub-readers. This array is returned by getSequentialSubReaders() and used to resolve the correct subreader for docID-based methods. Please note: This array is not cloned and not protected for modification, the subclass is responsible to do this.
      subReadersSorter - – a comparator for sorting sub readers. If not null, this comparator is used to sort sub readers, before using the for resolving doc IDs.
      Throws:
      IOException
  • Method Details

    • getTermVectors

      public final Fields getTermVectors(int docID) throws 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:
      IOException
    • numDocs

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

      NOTE: This operation may run in O(maxDoc). Implementations that can't return this number in constant-time should cache it.

      Specified by:
      numDocs in class IndexReader
    • maxDoc

      public final 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
    • document

      public final void document(int docID, StoredFieldVisitor visitor) throws IOException
      Description copied from class: IndexReader
      Expert: visits the fields of a stored document, for custom processing/loading of each field. If you simply want to load all fields, use IndexReader.document(int). If you want to load a subset, use DocumentStoredFieldVisitor.
      Specified by:
      document in class IndexReader
      Throws:
      IOException
    • docFreq

      public final int docFreq(Term term) throws IOException
      Description copied from class: IndexReader
      Returns the number of documents containing the term. This method returns 0 if the term or field does not exists. This method does not take into account deleted documents that have not yet been merged away.
      Specified by:
      docFreq in class IndexReader
      Throws:
      IOException
      See Also:
    • totalTermFreq

      public final long totalTermFreq(Term term) throws IOException
      Description copied from class: IndexReader
      Returns the total number of occurrences of term across all documents (the sum of the freq() for each doc that has this term). Note that, like other term measures, this measure does not take deleted documents into account.
      Specified by:
      totalTermFreq in class IndexReader
      Throws:
      IOException
    • getSumDocFreq

      public final long getSumDocFreq(String field) throws IOException
      Description copied from class: IndexReader
      Returns the sum of TermsEnum.docFreq() for all terms in this field. Note that, just like other term measures, this measure does not take deleted documents into account.
      Specified by:
      getSumDocFreq in class IndexReader
      Throws:
      IOException
      See Also:
    • getDocCount

      public final int getDocCount(String field) throws IOException
      Description copied from class: IndexReader
      Returns the number of documents that have at least one term for this field. Note that, just like other term measures, this measure does not take deleted documents into account.
      Specified by:
      getDocCount in class IndexReader
      Throws:
      IOException
      See Also:
    • getSumTotalTermFreq

      public final long getSumTotalTermFreq(String field) throws IOException
      Description copied from class: IndexReader
      Returns the sum of TermsEnum.totalTermFreq() for all terms in this field. Note that, just like other term measures, this measure does not take deleted documents into account.
      Specified by:
      getSumTotalTermFreq in class IndexReader
      Throws:
      IOException
      See Also:
    • readerIndex

      protected final int readerIndex(int docID)
      Helper method for subclasses to get the corresponding reader for a doc ID
    • readerBase

      protected final int readerBase(int readerIndex)
      Helper method for subclasses to get the docBase of the given sub-reader index.
    • getSequentialSubReaders

      protected final List<? extends R> getSequentialSubReaders()
      Description copied from class: CompositeReader
      Expert: returns the sequential sub readers that this reader is logically composed of. This method may not return null.

      NOTE: In contrast to previous Lucene versions this method is no longer public, code that wants to get all LeafReaders this composite is composed of should use IndexReader.leaves().

      Specified by:
      getSequentialSubReaders in class CompositeReader
      See Also: