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.
Note
This API is experimental and might change in incompatible ways in the next release.
Inheritance
Inherited Members
Namespace: Lucene.Net.Codecs
Assembly: Lucene.Net.dll
Syntax
public abstract class MultiLevelSkipListWriter
Constructors
| Improve this Doc View SourceMultiLevelSkipListWriter(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 |
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 Sourcem_numberOfSkipLevels
Number of levels in this skip list.
Declaration
protected int m_numberOfSkipLevels
Field Value
Type | Description |
---|---|
System.Int32 |
Methods
| Improve this Doc View SourceBufferSkip(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. |
Exceptions
Type | Condition |
---|---|
System.IO.IOException | If an I/O error occurs. |
Init()
Allocates internal skip buffers.
Declaration
protected virtual void Init()
ResetSkip()
Creates new buffers or empties the existing ones.
Declaration
public virtual void ResetSkip()
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. |
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. |