system.indexes.bitmap_indexes module

Concrete bitmap index implementations: sorted/unsorted, equality-encoded, and range-encoded.

class system.indexes.bitmap_indexes.SortedBitmapIndex(bit_sequence_type: ~typing.Type[~system.interfaces.bit_sequence.UncompressedBitSequence] = <class 'system.bit_sequences.IntegerBitSequence'>, compression_type: ~typing.Type[~system.interfaces.bit_sequence.CompressedBitSequence] | None = None)[source]

Bases: BitmapIndex, ABC, Generic

Abstract base class for a sorted bitmap index.

bulkload(data: Iterator[tuple[Key, Value]], key_prefix: str = '') → None[source]

See Index.bulkload().

After the base bulkload, sorts the key/bit-sequence list by key (raising ValueError if the keys are not sortable) and rebuilds the key-to-index map to reflect the sorted order.

size() → int[source]

See Index.size().

Unlike the base bitmap index, sorted bitmap indexes support this and return the number of distinct keys.

get_number_of_bits() → int[source]

See BitmapIndex.get_number_of_bits().

Sums the number of bits over every bit sequence in the list.

class system.indexes.bitmap_indexes.UnsortedBitmapIndex(bit_sequence_type: ~typing.Type[~system.interfaces.bit_sequence.UncompressedBitSequence] = <class 'system.bit_sequences.IntegerBitSequence'>, compression_type: ~typing.Type[~system.interfaces.bit_sequence.CompressedBitSequence] | None = None)[source]

Bases: BitmapIndex, ABC, Generic

Abstract base class for an unsorted bitmap index.

size() → int[source]

See Index.size().

Unlike the base bitmap index, unsorted bitmap indexes support this and return the number of distinct keys.

get_number_of_bits() → int[source]

See BitmapIndex.get_number_of_bits().

Sums the number of bits over every bit sequence in the map.

class system.indexes.bitmap_indexes.EqualityEncodedBitmapIndex(bit_sequence_type: ~typing.Type[~system.interfaces.bit_sequence.UncompressedBitSequence] = <class 'system.bit_sequences.IntegerBitSequence'>, compression_type: ~typing.Type[~system.interfaces.bit_sequence.CompressedBitSequence] | None = None)[source]

Bases: BitmapIndex, ABC, Generic

Implements an equality encoded bitmap index structure.

bulkload(data: Iterator[tuple[Key, Value]], key_prefix: str = '') → None[source]

See Index.bulkload().

After the base bulkload, compresses all bit sequences in one pass if compression is enabled (cheaper than inserting into compressed sequences).

get_equal(key: Key) → BitSequence[source]

See BitmapIndex.get_equal().

Equality-encoded variant: returns the key’s stored bit sequence directly, or an empty bit sequence if the key is absent.

class system.indexes.bitmap_indexes.SortedEqualityEncodedBitmapIndex(bit_sequence_type: ~typing.Type[~system.interfaces.bit_sequence.UncompressedBitSequence] = <class 'system.bit_sequences.IntegerBitSequence'>, compression_type: ~typing.Type[~system.interfaces.bit_sequence.CompressedBitSequence] | None = None)[source]

Bases: EqualityEncodedBitmapIndex, SortedBitmapIndex, Generic

Implements a sorted equality encoded bitmap index structure.

class system.indexes.bitmap_indexes.UnsortedEqualityEncodedBitmapIndex(bit_sequence_type: ~typing.Type[~system.interfaces.bit_sequence.UncompressedBitSequence] = <class 'system.bit_sequences.IntegerBitSequence'>, compression_type: ~typing.Type[~system.interfaces.bit_sequence.CompressedBitSequence] | None = None)[source]

Bases: EqualityEncodedBitmapIndex, UnsortedBitmapIndex, Generic

Implements an unsorted equality encoded bitmap index structure.

class system.indexes.bitmap_indexes.RangeEncodedBitmapIndex(bit_sequence_type: ~typing.Type[~system.interfaces.bit_sequence.UncompressedBitSequence] = <class 'system.bit_sequences.IntegerBitSequence'>, compression_type: ~typing.Type[~system.interfaces.bit_sequence.CompressedBitSequence] | None = None)[source]

Bases: SortedBitmapIndex, Generic

Implements range encoded bitmap index structure. Each bit_sequence contains all values whose keys are less or equal to the keys represented by the bit_sequence.

bulkload(data: Iterator[tuple[Key, Value]], key_prefix: str = '') → None[source]

See Index.bulkload().

Range-encoded variant: after building the sorted bitmap, propagates each key’s values into every bit sequence of the greater-or-equal keys so that each bit sequence holds all values with keys up to its own, then compresses if enabled.

get_equal(key: Key) → BitSequence[source]

See BitmapIndex.get_equal().

Range-encoded variant: recovers the equal set by subtracting the previous (next-smaller) key’s cumulative bit sequence from this key’s, returning an empty sequence for an absent key and the raw sequence at index 0.