org.apache.lucene.facet.encoding
Class EightFlagsIntEncoder
java.lang.Object
org.apache.lucene.facet.encoding.IntEncoder
org.apache.lucene.facet.encoding.ChunksIntEncoder
org.apache.lucene.facet.encoding.EightFlagsIntEncoder
public class EightFlagsIntEncoder
- extends ChunksIntEncoder
A ChunksIntEncoder
which encodes data in chunks of 8. Every group
starts with a single byte (called indicator) which represents 8 - 1 bit
flags, where the value:
- 1 means the encoded value is '1'
- 0 means the value is encoded using
VInt8IntEncoder
, and the
encoded bytes follow the indicator.
Since value 0 is illegal, and 1 is encoded in the indicator, the actual value
that is encoded is value-2
, which saves some more bits.
Encoding example:
- Original values: 6, 16, 5, 9, 7, 1
- After sorting: 1, 5, 6, 7, 9, 16
- D-Gap computing: 1, 4, 1, 1, 2, 5 (so far - done by
DGapIntEncoder
)
- Encoding: 1,0,1,1,0,0,0,0 as the indicator, by 2 (4-2), 0 (2-2), 3 (5-2).
- Binary encode: 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 00000010 00000000
00000011 (indicator is underlined).
NOTE: the order of the values in the indicator is lsb ⇒ msb,
which allows for more efficient decoding.
- WARNING: This API is experimental and might change in incompatible ways in the next release.
EightFlagsIntEncoder
public EightFlagsIntEncoder()
encode
public void encode(IntsRef values,
BytesRef buf)
- Description copied from class:
IntEncoder
- Encodes the values to the given buffer. Note that the buffer's offset and
length are set to 0.
- Specified by:
encode
in class IntEncoder
createMatchingDecoder
public IntDecoder createMatchingDecoder()
- Description copied from class:
IntEncoder
- Returns an
IntDecoder
which can decode the values that were encoded
with this encoder.
- Specified by:
createMatchingDecoder
in class IntEncoder
toString
public String toString()
- Overrides:
toString
in class Object
Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.