https://github.com/quickwit-oss/tantivy/pull/2740 https://github.com/quickwit-oss/tantivy/pull/2759
159 karma · joined June 25, 2014
https://github.com/quickwit-oss/tantivy/pull/2740 https://github.com/quickwit-oss/tantivy/pull/2759
SStable does not support Regex queries, it would require a full load and scan, which would be very expensive.
Your best bet currently would be to make it work with tokenizing, which is way more efficient anyways.
prefix queries are supported btw
quickwit was built to handle extremely large data volumes, you can ingest and search TB and PB of logs.
meilisearches indexing doesn't scale as it will become slower the more data you have, e.g. I failed to ingest 7GB of data.
Yes that's how you use tantivy normally, not sure which json config you mean.
tantivy-cli is more like a showcase, https://github.com/quickwit-oss/tantivy is the actual project.
There's no sequential decoding in our variant, every access is independent. The roaring bitmap variant is used only for the optional index (1 docid => 0 or 1 value) in the columnar storage (DocValues), not for the inverted index. Since this is used for aggregation, some queries may be a full scan.
The inverted index in tantivy uses bitpacked values of 128 elements with a skip index on top.
> I didn't follow the rest of your comment, select is what EF is good at, every other data structure needs a lot more scanning once you land on the right chunk. With BMI2 you can also use the PDEP instruction to accelerate the final select on a 64-bit block
The select for the sparse codec is a simple array index access, that is hard to beat (https://github.com/quickwit-oss/tantivy/blob/main/columnar/s...). Compression is not good near the 5k threshold though. PDEP is currently deactivated since ryzen before Zen3 was really slow.
Creation speed is also quite important, do you know how "Partitioned Elias-Fano" performs there?
Just for clarification you mean the access pattern is sparse and not the data itself? How is that relevant?
I did part of the investigation and implementation, but didn't look much into elias fano coding. The select for the dense codec is already really fast (with popcount), there's not much room for improvement on the instruction side (https://godbolt.org/z/dq7WeE66Y), except implicitly by touching less memory. The sparse codec with its binary search should be easy to beat though. Partitioned Elias-Fano indexes may be a superior choice in contrast to the sparse codec in terms of rank and compression, and probably less so for select and code complexity.
To be more optimistic assess good stuff as personal, general, and permanent and negative as impersonal, specific and temporal.
Make notes everyday about your assessments and correct them.
There is research backing this thesis.