After a long period of private development, the RLucene repository was opened to the public on September 5, 2026.
RLucene is a Rust port of Apache Lucene, the high-performance, full-featured search engine library.
For supported features, RLucene is index-compatible with Apache Lucene 10.1, and each can read indexes created by the other.
The goal is to stay as close to Apache Lucene as possible—nearly 100% aligned in architecture, behavior, semantics, and everyday usage. If you've used Lucene before, RLucene should feel familiar. It keeps the same core concepts and workflows, including documents, fields, analyzers, index writers, readers, searchers, and queries.
A few small changes are unavoidable because Rust and Java handle types, ownership, and errors differently.
RLucene currently tracks Apache Lucene 10.1. Once this port is feature-complete and stable, the plan is to keep RLucene aligned with the Lucene release just before the latest one.
RLucene is still under active development. Most commonly used features are already implemented, but there is still plenty left to port, polish, and test. Expect a few rough edges for now—we're working through them one by one.
For a general introduction to Lucene concepts and usage, see the Apache Lucene documentation.
RLucene uses Jenkins for continuous integration. You can follow build status and test results at jenkins.amazingkoala.com.cn.
The Rust toolchain used by the project is pinned in
rust-toolchain.toml. If you use rustup, the right
toolchain and components will be selected automatically.
| Command | What it does |
|---|---|
cargo tidy |
Checks license headers, applies Cargo fixes, formats the code, and runs Clippy for all targets and features. You need to resolve all warnings and errors. |
cargo test-light |
Runs the same library test set as cargo test, but finishes faster by enabling light mode, reusing shared read-only fixtures, and reducing test debug information. Some expensive tests use a lighter workload in this mode. |
cargo commit |
Runs cargo tidy and fails on any unresolved warning or error, requires a clean working tree, and then runs cargo test-light. Use it after committing your changes and before submitting a PR; it does not create a Git commit. |
cargo nextest-run |
Runs tests with the third-party nextest test runner. |
The cargo nextest-run command requires
cargo-nextest to be installed first. This is a one-time
setup:
cargo install cargo-nextest --lockedYou can then run:
cargo nextest-runThe other project-specific commands do not require cargo-nextest.
RLucene is licensed under the Apache License 2.0.