You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a theoretical question related to bitwise operations on compressed bitvectors. Lucene and other search engines use compressed bitmaps or roaring bitmaps to compute the OR between two representations of bitvectors, while also exploiting SIMD instructions for computing the results.
Is there a similar mechanism in the library to intersect or compute the unions of compressed bitvectorsrrr_vector and sd_vector? If not, can it be done? Can you direct me towards the academic literature concerning the bitwise operations on succinct bitvectors.
The text was updated successfully, but these errors were encountered:
With rrr_vector, the best idea is probably to decompress the bitvector one block at a time, do the operations with the decompressed blocks, and then compress the results if needed. Decompressing a block takes a similar amount of effort as extracting a single bit. rrr_vector::get_int() already implements something like that.
The best you can do with an sd_vector is an interator that lists the positions containing 1-bits. A select(i) query is implemented as
low[i - 1] + ((high_1_select(i) + 1 - i) << wl)
The lower wl bits of the positions are stored in array low, while the differences between the integers represented by the high-order bits are encoded in unary in uncompressed bitvector high. Because bitvector high is guaranteed to be dense, you can just count the number of 0-bits between successive 1-bits in high to update the high-order bits for the next position.
This is a theoretical question related to bitwise operations on compressed
bitvectors
. Lucene and other search engines use compressed bitmaps or roaring bitmaps to compute the OR between two representations ofbitvectors
, while also exploiting SIMD instructions for computing the results.Is there a similar mechanism in the library to intersect or compute the unions of compressed
bitvectors
rrr_vector
andsd_vector
? If not, can it be done? Can you direct me towards the academic literature concerning the bitwise operations on succinctbitvectors
.The text was updated successfully, but these errors were encountered: