Class ReaderUtil

java.lang.Object
org.apache.lucene.index.ReaderUtil

public final class ReaderUtil extends Object
Common util methods for dealing with IndexReaders and IndexReaderContexts.
NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
  • Method Details

    • getTopLevelContext

      public static IndexReaderContext getTopLevelContext(IndexReaderContext context)
      Walks up the reader tree and return the given context's top level reader context, or in other words the reader tree's root context.
    • subIndex

      public static int subIndex(int n, int[] docStarts)
      Returns index of the searcher/reader for document n in the array used to construct this searcher/reader.
    • subIndex

      public static int subIndex(int n, List<LeafReaderContext> leaves)
      Returns index of the searcher/reader for document n in the array used to construct this searcher/reader.
    • partitionByLeaf

      public static ReaderUtil.PartitionedHits partitionByLeaf(int[] globalDocIds, List<LeafReaderContext> leaves)
      Partitions global doc IDs by leaf, tracking each doc ID's original position in the input array so callers can reassemble per-leaf results back to input order (scatter/gather).

      Doc IDs may be supplied in any order (e.g., ranking order); within each leaf the returned doc IDs are sorted in ascending order. For every partitioned doc ID the result also records its index in the original globalDocIds array, so callers can map per-leaf results back to input order. Callers that do not need the ordinals can simply ignore ReaderUtil.PartitionedHits.ordinalsByLeaf() and use ReaderUtil.PartitionedHits.docIdsByLeaf().

      The input array is not mutated.

      Parameters:
      globalDocIds - global doc IDs in any order (e.g., ranking order)
      leaves - the index reader's leaves
      Returns:
      per-leaf sorted doc IDs alongside per-leaf ordinals into the input array