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

org.apache.lucene.util.packed.package-info Maven / Gradle / Ivy

The newest version!
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/** 
 * Packed integer arrays and streams.
 * 
 * 

* The packed package provides *

    *
  • sequential and random access capable arrays of positive longs,
  • *
  • routines for efficient serialization and deserialization of streams of packed integers.
  • *
* * The implementations provide different trade-offs between memory usage and * access speed. The standard usage scenario is replacing large int or long * arrays in order to reduce the memory footprint. *

* The main access point is the {@link org.apache.lucene.util.packed.PackedInts} factory. * *

In-memory structures

* *
    *
  • {@link org.apache.lucene.util.packed.PackedInts.Mutable}
      *
    • Only supports positive longs.
    • *
    • Requires the number of bits per value to be known in advance.
    • *
    • Random-access for both writing and reading.
    • *
  • *
  • {@link org.apache.lucene.util.packed.GrowableWriter}
      *
    • Same as PackedInts.Mutable but grows the number of bits per values when needed.
    • *
    • Useful to build a PackedInts.Mutable from a read-once stream of longs.
    • *
  • *
  • {@link org.apache.lucene.util.packed.PagedGrowableWriter}
      *
    • Slices data into fixed-size blocks stored in GrowableWriters.
    • *
    • Supports more than 2B values.
    • *
    • You should use PackedLongValues instead if you don't need random write access.
    • *
  • *
  • {@link org.apache.lucene.util.packed.PackedLongValues#deltaPackedBuilder}
      *
    • Can store any sequence of longs.
    • *
    • Compression is good when values are close to each other.
    • *
    • Supports random reads, but only sequential writes.
    • *
    • Can address up to 2^42 values.
    • *
  • *
  • {@link org.apache.lucene.util.packed.PackedLongValues#packedBuilder}
      *
    • Same as deltaPackedBuilder but assumes values are 0-based.
    • *
  • *
  • {@link org.apache.lucene.util.packed.PackedLongValues#monotonicBuilder}
      *
    • Same as deltaPackedBuilder except that compression is good when the stream is a succession of affine functions.
    • *
  • *
* *

Disk-based structures

* *
    *
  • {@link org.apache.lucene.util.packed.PackedInts.Writer}, {@link org.apache.lucene.util.packed.PackedInts.Reader}, {@link org.apache.lucene.util.packed.PackedInts.ReaderIterator}
      *
    • Only supports positive longs.
    • *
    • Requires the number of bits per value to be known in advance.
    • *
    • Supports both fast sequential access with low memory footprint with ReaderIterator and random-access by either loading values in memory or leaving them on disk with Reader.
    • *
  • *
  • {@link org.apache.lucene.util.packed.BlockPackedWriter}, {@link org.apache.lucene.util.packed.BlockPackedReader}, {@link org.apache.lucene.util.packed.BlockPackedReaderIterator}
      *
    • Splits the stream into fixed-size blocks.
    • *
    • Compression is good when values are close to each other.
    • *
    • Can address up to 2B * blockSize values.
    • *
  • *
  • {@link org.apache.lucene.util.packed.MonotonicBlockPackedWriter}, {@link org.apache.lucene.util.packed.MonotonicBlockPackedReader}
      *
    • Same as the non-monotonic variants except that compression is good when the stream is a succession of affine functions.
    • *
    • The reason why there is no sequential access is that if you need sequential access, you should rather delta-encode and use BlockPackedWriter.
    • *
  • *
  • {@link org.apache.lucene.util.packed.PackedDataOutput}, {@link org.apache.lucene.util.packed.PackedDataInput}
      *
    • Writes sequences of longs where each long can use any number of bits.
    • *
  • *
*/ package org.apache.lucene.util.packed;




© 2015 - 2025 Weber Informatics LLC | Privacy Policy