Fast keyword search engine for code repositories, built in Rust.
Instead of scanning files on every query, CodeSearch builds a persistent inverted index — enabling sub-millisecond lookups on large codebases.
cargo build --release
cp target/release/codesearch ~/.local/bin/codesearch index ./my-projectcodesearch search websocket
codesearch search websocket --ext rs
codesearch search socket --partialcodesearch update ./my-projectcodesearch stats$ codesearch search websocket
3 result(s) for 'websocket'
src/network/server.cpp:45
src/client/ws.cpp:12
src/client/ws.cpp:38
Tested on the Linux kernel source tree (~70k files):
| Operation | Time |
|---|---|
| First index build | ~1.4s |
| Subsequent query | < 10ms |
| grep -r (no index) | ~8.2s |
codesearch/
├── src/
│ ├── main.rs — CLI entry point + command routing
│ ├── config.rs — paths, constants, extension filters
│ ├── error.rs — single AppError type
│ ├── tokenizer.rs — text → tokens
│ ├── index.rs — inverted index data structure
│ ├── indexer.rs — file walker + parallel index builder
│ ├── serializer.rs — binary save/load (bincode)
│ └── searcher.rs — exact + partial query execution
├── benches/
├── tests/
├── Cargo.toml
└── README.md
| Crate | Purpose |
|---|---|
| clap | CLI argument parsing |
| walkdir | Recursive directory traversal |
| rayon | Parallel file processing |
| serde | Serialization framework |
| bincode | Binary encoding |
| ignore | .gitignore-aware file walking |