Class MultiLevelSkipListReader

    • Field Detail

      • maxNumberOfSkipLevels

        protected int maxNumberOfSkipLevels
        the maximum number of skip levels possible for this index
      • numberOfSkipLevels

        protected int numberOfSkipLevels
        number of levels in this skip list
      • docCount

        private int docCount
      • skipStream

        private IndexInput[] skipStream
        skipStream for each level.
      • skipPointer

        private long[] skipPointer
        The start pointer of each skip level.
      • skipInterval

        private int[] skipInterval
        skipInterval of each level.
      • numSkipped

        private int[] numSkipped
        Number of docs skipped per level. It's possible for some values to overflow a signed int, but this has been accounted for.
      • skipDoc

        protected int[] skipDoc
        Doc id of current skip entry per level.
      • lastDoc

        private int lastDoc
        Doc id of last read skip entry with docId <= target.
      • childPointer

        private long[] childPointer
        Child pointer of current skip entry per level.
      • lastChildPointer

        private long lastChildPointer
        childPointer of last read skip entry with docId <= target.
      • skipMultiplier

        private final int skipMultiplier
    • Constructor Detail

      • MultiLevelSkipListReader

        protected MultiLevelSkipListReader​(IndexInput skipStream,
                                           int maxSkipLevels,
                                           int skipInterval,
                                           int skipMultiplier)
        Creates a MultiLevelSkipListReader.
      • MultiLevelSkipListReader

        protected MultiLevelSkipListReader​(IndexInput skipStream,
                                           int maxSkipLevels,
                                           int skipInterval)
        Creates a MultiLevelSkipListReader, where skipInterval and skipMultiplier are the same.
    • Method Detail

      • getDoc

        public int getDoc()
        Returns the id of the doc to which the last call of skipTo(int) has skipped.
      • skipTo

        public int skipTo​(int target)
                   throws java.io.IOException
        Skips entries to the first beyond the current whose document number is greater than or equal to target. Returns the current doc count.
        Throws:
        java.io.IOException
      • loadNextSkip

        private boolean loadNextSkip​(int level)
                              throws java.io.IOException
        Throws:
        java.io.IOException
      • seekChild

        protected void seekChild​(int level)
                          throws java.io.IOException
        Seeks the skip entry on the given level
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException
      • init

        public void init​(long skipPointer,
                         int df)
                  throws java.io.IOException
        Initializes the reader, for reuse on a new term.
        Throws:
        java.io.IOException
      • loadSkipLevels

        private void loadSkipLevels()
                             throws java.io.IOException
        Loads the skip levels
        Throws:
        java.io.IOException
      • readSkipData

        protected abstract int readSkipData​(int level,
                                            IndexInput skipStream)
                                     throws java.io.IOException
        Subclasses must implement the actual skip data encoding in this method.
        Parameters:
        level - the level skip data shall be read from
        skipStream - the skip stream to read from
        Throws:
        java.io.IOException
      • setLastSkipData

        protected void setLastSkipData​(int level)
        Copies the values of the last read skip entry on this level