org.apache.lucene.util.encoding
Class EightFlagsIntEncoder
java.lang.Object
org.apache.lucene.util.encoding.IntEncoder
org.apache.lucene.util.encoding.ChunksIntEncoder
org.apache.lucene.util.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.
Fields inherited from class org.apache.lucene.util.encoding.IntEncoder |
out |
EightFlagsIntEncoder
public EightFlagsIntEncoder()
encode
public void encode(int data)
throws IOException
- Description copied from class:
IntEncoder
- Encodes an integer to the output stream given in
reInit
- Specified by:
encode
in class IntEncoder
- Throws:
IOException
createMatchingDecoder
public IntDecoder createMatchingDecoder()
- Description copied from class:
IntEncoder
- Returns an
IntDecoder
which matches this encoder. Every encoder
must return an IntDecoder
and null
is not a valid
value. If an encoder is just a filter, it should at least return its
wrapped encoder's matching decoder.
NOTE: this method should create a new instance of the matching
decoder and leave the instance sharing to the caller. Returning the same
instance over and over is risky because encoders and decoders are not
thread safe.
- Specified by:
createMatchingDecoder
in class IntEncoder
toString
public String toString()
- Overrides:
toString
in class Object
Copyright © 2000-2011 Apache Software Foundation. All Rights Reserved.