Show / Hide Table of Contents

    Class MultiLevelSkipListWriter

    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.

    This is a Lucene.NET EXPERIMENTAL API, use at your own risk
    Inheritance
    System.Object
    MultiLevelSkipListWriter
    Namespace: Lucene.Net.Codecs
    Assembly: Lucene.Net.dll
    Syntax
    public abstract class MultiLevelSkipListWriter : object

    Constructors

    | Improve this Doc View Source

    MultiLevelSkipListWriter(Int32, Int32, Int32)

    Creates a MultiLevelSkipListWriter, where Lucene.Net.Codecs.MultiLevelSkipListWriter.skipInterval and Lucene.Net.Codecs.MultiLevelSkipListWriter.skipMultiplier are the same.

    Declaration
    protected MultiLevelSkipListWriter(int skipInterval, int maxSkipLevels, int df)
    Parameters
    Type Name Description
    System.Int32 skipInterval
    System.Int32 maxSkipLevels
    System.Int32 df
    | Improve this Doc View Source

    MultiLevelSkipListWriter(Int32, Int32, Int32, Int32)

    Creates a MultiLevelSkipListWriter.

    Declaration
    protected MultiLevelSkipListWriter(int skipInterval, int skipMultiplier, int maxSkipLevels, int df)
    Parameters
    Type Name Description
    System.Int32 skipInterval
    System.Int32 skipMultiplier
    System.Int32 maxSkipLevels
    System.Int32 df

    Fields

    | Improve this Doc View Source

    m_numberOfSkipLevels

    Number of levels in this skip list.

    Declaration
    protected int m_numberOfSkipLevels
    Field Value
    Type Description
    System.Int32

    Methods

    | Improve this Doc View Source

    BufferSkip(Int32)

    Writes the current skip data to the buffers. The current document frequency determines the max level is skip data is to be written to.

    Declaration
    public virtual void BufferSkip(int df)
    Parameters
    Type Name Description
    System.Int32 df

    The current document frequency.

    | Improve this Doc View Source

    Init()

    Allocates internal skip buffers.

    Declaration
    protected virtual void Init()
    | Improve this Doc View Source

    ResetSkip()

    Creates new buffers or empties the existing ones.

    Declaration
    public virtual void ResetSkip()
    | Improve this Doc View Source

    WriteSkip(IndexOutput)

    Writes the buffered skip lists to the given output.

    Declaration
    public virtual long WriteSkip(IndexOutput output)
    Parameters
    Type Name Description
    IndexOutput output

    The IndexOutput the skip lists shall be written to.

    Returns
    Type Description
    System.Int64

    The pointer the skip list starts.

    | Improve this Doc View Source

    WriteSkipData(Int32, IndexOutput)

    Subclasses must implement the actual skip data encoding in this method.

    Declaration
    protected abstract void WriteSkipData(int level, IndexOutput skipBuffer)
    Parameters
    Type Name Description
    System.Int32 level

    The level skip data shall be writing for.

    IndexOutput skipBuffer

    The skip buffer to write to.

    • Improve this Doc
    • View Source
    Back to top Copyright © 2020 Licensed to the Apache Software Foundation (ASF)