org.apache.lucene.codecs
Class MultiLevelSkipListWriter
java.lang.Object
org.apache.lucene.codecs.MultiLevelSkipListWriter
- Direct Known Subclasses:
- Lucene40SkipListWriter
public abstract class MultiLevelSkipListWriter
- extends 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.
- WARNING: This API is experimental and might change in incompatible ways in the next release.
Method Summary |
void |
bufferSkip(int df)
Writes the current skip data to the buffers. |
protected void |
init()
|
protected void |
resetSkip()
|
long |
writeSkip(IndexOutput output)
Writes the buffered skip lists to the given output. |
protected abstract void |
writeSkipData(int level,
IndexOutput skipBuffer)
Subclasses must implement the actual skip data encoding in this method. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
numberOfSkipLevels
protected int numberOfSkipLevels
MultiLevelSkipListWriter
protected MultiLevelSkipListWriter(int skipInterval,
int maxSkipLevels,
int df)
init
protected void init()
resetSkip
protected void resetSkip()
writeSkipData
protected abstract void writeSkipData(int level,
IndexOutput skipBuffer)
throws IOException
- Subclasses must implement the actual skip data encoding in this method.
- Parameters:
level
- the level skip data shall be writing forskipBuffer
- the skip buffer to write to
- Throws:
IOException
bufferSkip
public void bufferSkip(int df)
throws 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:
IOException
writeSkip
public long writeSkip(IndexOutput output)
throws 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:
IOException
Copyright © 2000-2012 Apache Software Foundation. All Rights Reserved.