Package me.lemire.integercompression
Class OptPFDS9
java.lang.Object
me.lemire.integercompression.OptPFDS9
- All Implemented Interfaces:
IntegerCODEC
,SkippableIntegerCODEC
OptPFD based on Simple9 by Yan et al.
Follows:
H. Yan, S. Ding, T. Suel, Inverted index compression and query processing with optimized document ordering, in: WWW 09, 2009, pp. 401-410.
using Simple9 as the secondary coder. It encodes integers in blocks of 128 integers. For arrays containing an arbitrary number of integers, you should use it in conjunction with another CODEC:IntegerCODEC ic = new Composition(new OptPFDS9(), new VariableByte()).Note that this does not use differential coding: if you are working on sorted lists, you must compute the deltas separately. For multi-threaded applications, each thread should use its own OptPFDS9 object.
- Author:
- Daniel Lemire
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
compress
(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos) Compress data from an array to another array.void
headlessCompress
(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos) Compress data from an array to another array.void
headlessUncompress
(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos, int mynvalue) Uncompress data from an array to another array.toString()
void
uncompress
(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos) Uncompress data from an array to another array.
-
Constructor Details
-
OptPFDS9
public OptPFDS9()Constructor for the OptPFDS9 CODEC.
-
-
Method Details
-
headlessCompress
public void headlessCompress(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos) Description copied from interface:SkippableIntegerCODEC
Compress data from an array to another array. Both inpos and outpos are modified to represent how much data was read and written to. If 12 ints (inlength = 12) are compressed to 3 ints, then inpos will be incremented by 12 while outpos will be incremented by 3. We use IntWrapper to pass the values by reference. Implementation note: contrary toIntegerCODEC.compress(int[], me.lemire.integercompression.IntWrapper, int, int[], me.lemire.integercompression.IntWrapper)
, this may skip writing information about the number of encoded integers.- Specified by:
headlessCompress
in interfaceSkippableIntegerCODEC
- Parameters:
in
- input arrayinpos
- where to start reading in the arrayinlength
- how many integers to compressout
- output arrayoutpos
- where to write in the output array
-
headlessUncompress
public void headlessUncompress(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos, int mynvalue) Description copied from interface:SkippableIntegerCODEC
Uncompress data from an array to another array. Both inpos and outpos parameters are modified to indicate new positions after read/write.- Specified by:
headlessUncompress
in interfaceSkippableIntegerCODEC
- Parameters:
in
- array containing data in compressed forminpos
- where to start reading in the arrayinlength
- length of the compressed data (ignored by some schemes)out
- array where to write the uncompressed outputoutpos
- where to start writing the uncompressed output in outmynvalue
- number of integers we want to decode. May be less than the actual number of compressed integers
-
compress
Description copied from interface:IntegerCODEC
Compress data from an array to another array. Both inpos and outpos are modified to represent how much data was read and written to. If 12 ints (inlength = 12) are compressed to 3 ints, then inpos will be incremented by 12 while outpos will be incremented by 3. We use IntWrapper to pass the values by reference.- Specified by:
compress
in interfaceIntegerCODEC
- Parameters:
in
- input arrayinpos
- where to start reading in the arrayinlength
- how many integers to compressout
- output arrayoutpos
- where to write in the output array
-
uncompress
Description copied from interface:IntegerCODEC
Uncompress data from an array to another array. Both inpos and outpos parameters are modified to indicate new positions after read/write.- Specified by:
uncompress
in interfaceIntegerCODEC
- Parameters:
in
- array containing data in compressed forminpos
- where to start reading in the arrayinlength
- length of the compressed data (ignored by some schemes)out
- array where to write the compressed outputoutpos
- where to start writing the uncompressed output in out
-
toString
-