Class MultiLevelSkipListWriter


  • public abstract class MultiLevelSkipListWriter
    extends java.lang.Object
    This abstract class writes skip lists with multiple levels.
    
     Example for skipInterval = 3:
                                                         c            (skip level 2)
                     c                 c                 c            (skip level 1) 
         x     x     x     x     x     x     x     x     x     x      (skip level 0)
     d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d  (posting list)
         3     6     9     12    15    18    21    24    27    30     (df)
     
     d - document
     x - skip data
     c - skip data with child pointer
     
     Skip level i contains every skipInterval-th entry from skip level i-1.
     Therefore the number of entries on level i is: floor(df / ((skipInterval ^ (i + 1))).
     
     Each skip entry on a level i>0 contains a pointer to the corresponding skip entry in list i-1.
     This guarantees a logarithmic amount of skips to find the target document.
     
     While this class takes care of writing the different skip levels,
     subclasses must define the actual format of the skip data.
     
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void bufferSkip​(int df)
      Writes the current skip data to the buffers.
      long writeSkip​(IndexOutput output)
      Writes the buffered skip lists to the given output.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • bufferSkip

        public void bufferSkip​(int df)
                        throws java.io.IOException
        Writes the current skip data to the buffers. The current document frequency determines the max level is skip data is to be written to.
        Parameters:
        df - the current document frequency
        Throws:
        java.io.IOException - If an I/O error occurs
      • writeSkip

        public long writeSkip​(IndexOutput output)
                       throws java.io.IOException
        Writes the buffered skip lists to the given output.
        Parameters:
        output - the IndexOutput the skip lists shall be written to
        Returns:
        the pointer the skip list starts
        Throws:
        java.io.IOException