support.bitvector module

An implementation of an object that acts like a collection of on/off bits.

Base classes

class whoosh.idsets.DocIdSet

Base class for a set of positive integers, implementing a subset of the built-in set type’s interface with extra docid-related methods.

This is a superclass for alternative set implementations to the built-in set which are more memory-efficient and specialized toward storing sorted lists of positive integers, though they will inevitably be slower than set for most operations since they’re pure Python.


Returns the next integer in the set after i, or None.


Returns the previous integer in the set before i, or None.


Returns the first (lowest) integer in the set.


Updates the set in-place to contain numbers in the range [0 - size) except numbers that are in this set.


Returns the last (highest) integer in the set.

class whoosh.idsets.BaseBitSet

Implementation classes

class whoosh.idsets.BitSet(source=None, size=0)

A DocIdSet backed by an array of bits. This can also be useful as a bit array (e.g. for a Bloom filter). It is much more memory efficient than a large built-in set of integers, but wastes memory for sparse sets.

  • maxsize – the maximum size of the bit array.
  • source – an iterable of positive integers to add to this set.
  • bits – an array of unsigned bytes (“B”) to use as the underlying bit array. This is used by some of the object’s methods.
class whoosh.idsets.OnDiskBitSet(dbfile, basepos, bytecount)

A DocIdSet backed by an array of bits on disk.

>>> st = RamStorage()
>>> f = st.create_file("test.bin")
>>> bs = BitSet([1, 10, 15, 7, 2])
>>> bytecount = bs.to_disk(f)
>>> f.close()
>>> # ...
>>> f = st.open_file("test.bin")
>>> odbs = OnDiskBitSet(f, bytecount)
>>> list(odbs)
[1, 2, 7, 10, 15]
  • dbfile – a StructFile object to read from.
  • basepos – the base position of the bytes in the given file.
  • bytecount – the number of bytes to use for the bit array.
class whoosh.idsets.SortedIntSet(source=None, typecode='I')

A DocIdSet backed by a sorted array of integers.

class whoosh.idsets.MultiIdSet(idsets, offsets)

Wraps multiple SERIAL sub-DocIdSet objects and presents them as an aggregated, read-only set.

  • idsets – a list of DocIdSet objects.
  • offsets – a list of offsets corresponding to the DocIdSet objects in idsets.