Class RoaringDocIdSet

java.lang.Object
org.apache.lucene.search.DocIdSet
org.apache.lucene.util.RoaringDocIdSet
All Implemented Interfaces:
Accountable

public class RoaringDocIdSet extends DocIdSet
DocIdSet implementation inspired from http://roaringbitmap.org/

The space is divided into blocks of 2^16 bits and each block is encoded independently. In each block, if less than 2^12 bits are set, then documents are simply stored in a short[]. If more than 2^16-2^12 bits are set, then the inverse of the set is encoded in a simple short[]. Otherwise a FixedBitSet is used.

  • Field Details

    • BLOCK_SIZE

      private static final int BLOCK_SIZE
      See Also:
    • MAX_ARRAY_LENGTH

      private static final int MAX_ARRAY_LENGTH
      See Also:
    • BASE_RAM_BYTES_USED

      private static final long BASE_RAM_BYTES_USED
    • docIdSets

      private final DocIdSet[] docIdSets
    • cardinality

      private final int cardinality
    • ramBytesUsed

      private final long ramBytesUsed
  • Constructor Details

    • RoaringDocIdSet

      private RoaringDocIdSet(DocIdSet[] docIdSets, int cardinality)
  • Method Details

    • ramBytesUsed

      public long ramBytesUsed()
      Description copied from interface: Accountable
      Return the memory usage of this object in bytes. Negative values are illegal.
    • iterator

      public DocIdSetIterator iterator() throws IOException
      Description copied from class: DocIdSet
      Provides a DocIdSetIterator to access the set. This implementation can return null if there are no docs that match.
      Specified by:
      iterator in class DocIdSet
      Throws:
      IOException
    • cardinality

      public int cardinality()
      Return the exact number of documents that are contained in this set.
    • toString

      public String toString()
      Overrides:
      toString in class Object