// the find
mosuka/bayard
A full-text search and indexing server written in Rust.
Bayard is a distributed full-text search server built on top of Tantivy (Rust's Lucene equivalent), adding clustering via the SWIM gossip protocol. It exposes both gRPC and REST APIs, supports sharding and replication across nodes, and handles leaderless cluster coordination. Think Elasticsearch, but in Rust, much smaller, and without the JVM tax.
Leaderless cluster design using SWIM/gossip means no Zookeeper or Raft leader election bottleneck — nodes discover each other without a coordinator. Rendezvous hashing for shard routing is a solid choice: consistent, low metadata overhead, and degrades gracefully when nodes leave. The tokenizer and token filter pipeline is well-decomposed — Lindera integration means CJK languages (Japanese, Korean, Chinese) work out of the box, which most small search servers skip entirely. Dual API surface (gRPC + REST) is practical: gRPC for internal cluster traffic, REST for clients that don't want to deal with protobuf.
Abandoned since March 2023 — 76 forks against 1871 stars and no commits in over two years is a dead project signal, not a stable one. No native vector/semantic search support: in 2024 this is a meaningful gap; Meilisearch and Quickwit have both shipped hybrid search while Bayard stalled. Commit semantics are explicit and manual — you PUT documents then call a separate /commit endpoint, which means you can lose writes on crashes unless you build the commit loop yourself. Documentation exists but is thin on operational details: nothing on index sizing, memory tuning, or what happens to in-flight requests during a node failure.