sift-core
Indexed grep-style search engine. Build on-disk indexes, then run regex or fixed-string queries with automatic candidate narrowing. The shipped index type is a trigram index; the SearchIndex trait allows plugging in additional index kinds.
Modules
| Module | Description |
|---|---|
query/ |
Query description (QuerySpec), planning |
index/ |
SearchIndex trait, Indexes registry, shared types (FileId, IndexId, IndexMeta) |
index/trigram/ |
Trigram index: build, load, search, and persistence |
index/trigram/storage/ |
Binary persistence format (lexicon, postings, file tables) |
grep/ |
Pipeline orchestration: GrepRequest, run() |
search/ |
Regex execution, scanning, output formatting, parallelism |
lib.rs |
Public API re-exports, error types, constants |
API
use ;
// Build (using the shipped trigram index)
let index = new.with_dir.build?;
// Open
let index = open?;
// Search (via grep pipeline)
let indexes = open?;
let query = new?;
let run = GrepRequest
.run?;
SearchQuery compiles the regex once; repeated run calls reuse the compiled matcher and searcher cache.
Features
| Feature | Effect |
|---|---|
profile |
Enables sift-profile binary and tempfile dependency |
Testing
Unit tests are co-located with implementation files in #[cfg(test)] mod tests blocks. Integration tests live in tests/.
See benches/README.md for the full benchmark and profiling workflow.