All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.terrier.structures.indexing.LZ4MetaIndexBuilder Maven / Gradle / Ivy

The newest version!
package org.terrier.structures.indexing;
import java.io.IOException;
import org.terrier.structures.LZ4CompressedMetaIndex;
import net.jpountz.lz4.LZ4Factory;
import net.jpountz.lz4.LZ4Compressor;
import org.terrier.structures.IndexOnDisk;

/**
 * Writes all metadata using Zstandard compression.
 * @since 5.5
 */
public class LZ4MetaIndexBuilder extends BaseMetaIndexBuilder {

    LZ4Compressor compressor = LZ4Factory.fastestInstance().fastCompressor();
    byte[] compressedBuffer;
    
    public LZ4MetaIndexBuilder(IndexOnDisk _index, String[] _keyNames, int[] _valueLens, String[] _reverseKeys)
	{
		this(_index, "meta", _keyNames, _valueLens, _reverseKeys);
	}

    public LZ4MetaIndexBuilder(IndexOnDisk _index, String _structureName, String[] _keyNames, int[] _valueLens, String[] _reverseKeys)
	{
        super(_index, _structureName, _keyNames, _valueLens, _reverseKeys);
        this.structureClass = LZ4CompressedMetaIndex.class;
        this.structureInputStreamClass = LZ4CompressedMetaIndex.InputStream.class;
        this.compressedBuffer = new byte[this.compressor.maxCompressedLength(entryLengthBytes)];
    }

    protected int writeData(byte[] data) throws IOException {
        int numBytes = compressor.compress(data, compressedBuffer);
        dataOutput.write(compressedBuffer, 0, numBytes);        
        return numBytes;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy