Class Lucene60PointsFormat
This data structure is written as a series of blocks on disk, with an in-memory perfectly balanced binary tree of split values referencing those blocks at the leaves.
The .dim
file has both blocks and the index split values, for each field. The
file starts with CodecUtil.writeIndexHeader(org.apache.lucene.store.DataOutput, java.lang.String, int, byte[], java.lang.String)
.
The blocks are written like this:
- count (vInt)
- delta-docID (vInt) count (delta coded docIDs, in sorted order)
- packedValuecount (the
byte[]
value of each dimension packed into a singlebyte[]
)
After all blocks for a field are written, then the index is written:
- numDims (vInt)
- maxPointsInLeafNode (vInt)
- bytesPerDim (vInt)
- count (vInt)
- packed index (byte[])
The packed index uses hierarchical delta and prefix coding to compactly encode the file pointer for all leaf blocks, once the tree is traversed, as well as the split dimension and split value for each inner node of the tree.
After all fields blocks + index data are written, CodecUtil.writeFooter(org.apache.lucene.store.IndexOutput)
writes the
checksum.
The .dii
file records the file pointer in the .dim
file where each
field's index data was written. It starts with CodecUtil.writeIndexHeader(org.apache.lucene.store.DataOutput, java.lang.String, int, byte[], java.lang.String)
, then has:
- fieldCount (vInt)
- (fieldNumber (vInt), fieldFilePointer (vLong))fieldCount
After all fields blocks + index data are written, CodecUtil.writeFooter(org.apache.lucene.store.IndexOutput)
writes the
checksum.
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) static final String
static final String
Filename extension for the leaf blocks(package private) static final int
(package private) static final int
static final String
Filename extension for the index per field(package private) static final int
(package private) static final int
(package private) static final String
Fields inherited from class org.apache.lucene.codecs.PointsFormat
EMPTY
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfieldsReader
(SegmentReadState state) Reads a segment.fieldsWriter
(SegmentWriteState state) Writes a new segment
-
Field Details
-
DATA_CODEC_NAME
- See Also:
-
META_CODEC_NAME
- See Also:
-
DATA_EXTENSION
Filename extension for the leaf blocks- See Also:
-
INDEX_EXTENSION
Filename extension for the index per field- See Also:
-
DATA_VERSION_START
static final int DATA_VERSION_START- See Also:
-
DATA_VERSION_CURRENT
static final int DATA_VERSION_CURRENT- See Also:
-
INDEX_VERSION_START
static final int INDEX_VERSION_START- See Also:
-
INDEX_VERSION_CURRENT
static final int INDEX_VERSION_CURRENT- See Also:
-
-
Constructor Details
-
Lucene60PointsFormat
public Lucene60PointsFormat()Sole constructor
-
-
Method Details
-
fieldsWriter
Description copied from class:PointsFormat
Writes a new segment- Specified by:
fieldsWriter
in classPointsFormat
- Throws:
IOException
-
fieldsReader
Description copied from class:PointsFormat
Reads a segment. NOTE: by the time this call returns, it must hold open any files it will need to use; else, those files may be deleted. Additionally, required files may be deleted during the execution of this call before there is a chance to open them. Under these circumstances an IOException should be thrown by the implementation. IOExceptions are expected and will automatically cause a retry of the segment opening logic with the newly revised segments.- Specified by:
fieldsReader
in classPointsFormat
- Throws:
IOException
-