Sonic
activeby Valerian Saliou (Crisp) · since 2019 · also known as Sonic search backend
Tiny schema-less Rust search backend that returns object IDs, running in a few MB of RAM.
Overview
Sonic is a minimalist search backend written in Rust by Valerian Saliou for the Crisp messaging platform. Instead of storing documents, it indexes words to object IDs in RocksDB and answers queries with ID lists you then look up in your primary database, which keeps memory use to a few megabytes even for millions of objects. It speaks a simple TCP text protocol (Sonic Channel) and supports search, suggest/autocomplete and per-collection buckets. It is a good fit for fast autocomplete and basic keyword lookup, not for relevance-heavy or semantic search.
Strengths & trade-offs
Strengths
- +Runs in a few MB of RAM
- +Very fast word and prefix lookups for autocomplete
- +Simple to operate: one binary plus a RocksDB directory
- +Language-aware tokenisation and stop words for many languages
Trade-offs
- −Returns IDs only; you must fetch documents from another store
- −Minimal relevance controls, no facets or aggregations
- −No replication or clustering
- −No vector search
Great for
- +Autocomplete and suggest
- +Search over chat messages or helpdesk tickets
- +Lightweight search for small servers
Think twice for
- −Ranked relevance search
- −Semantic or hybrid search
- −Analytics
Capabilities
Native or official first-party support · 2 of 25 tracked
Scale & consistency
- Comfortable data size
- Small · ≤ 100 GB
- Horizontal scaling
- None
- Multi-region
- No
- Transactions
- None
- Consistency
- Eventual
- Schema
- Schemaless
- Architecture
- Single node, Client server
- Query languages
- Sonic Channel protocol
Single process; shard by collection/bucket at the app level.
Deployment
Ecosystem
Alternatives to Sonic
Developer-friendly Rust search engine with typo tolerance and built-in hybrid semantic search.
sonic vs meilisearch →In-memory, typo-tolerant search engine in C++ with vector, hybrid and conversational search.
sonic vs typesense →Lightweight single-binary full-text search engine in Go with Elasticsearch-compatible ingest.
sonic vs zincsearch →Pure-Go full-text, geo and vector indexing library from Couchbase.
sonic vs bleve →Lucene-inspired full-text search library in Rust, the engine under Quickwit and ParadeDB.
sonic vs tantivy →German error-tolerant search and matching engine, now sold for identity resolution and data matching.
sonic vs exorbyte →Sonic FAQ
What is Sonic?
Sonic is a search engine database by Valerian Saliou (Crisp), first released in 2019. Sonic is a minimalist search backend written in Rust by Valerian Saliou for the Crisp messaging platform. Instead of storing documents, it indexes words to object IDs in RocksDB and answers queries with ID lists you then look up in your primary database, which keeps memory use to a few megabytes even for millions of objects. It speaks a simple TCP text protocol (Sonic Channel) and supports search, suggest/autocomplete and per-collection buckets. It is a good fit for fast autocomplete and basic keyword lookup, not for relevance-heavy or semantic search.
Is Sonic open source?
Yes. Sonic is open source. License: Mozilla Public License 2.0.
Does Sonic support ACID transactions?
No. Sonic does not provide ACID transactions; its consistency model is eventual.
Does Sonic scale horizontally?
Sonic does not scale horizontally; it runs on a single node, so you scale it up rather than out. It is comfortable at small scale (≤ 100 GB).
How can I run Sonic?
You can self-host it.
What is Sonic best for?
Sonic is a strong fit for autocomplete and suggest; search over chat messages or helpdesk tickets; and lightweight search for small servers. Think twice for ranked relevance search.
What are the best alternatives to Sonic?
Common alternatives to Sonic include Meilisearch, Typesense, ZincSearch, Bleve and Tantivy. The right choice depends on your workload, scale and hosting; WhichDB's smart match ranks them against your requirements.
How popular is Sonic?
Sonic ranks #326 of 844 databases on the WhichDB Score (8.3/100), and #21 among search engine databases. The score combines public adoption signals such as package downloads, GitHub activity, job posts and developer discussion.