finds.dev← search

// the find

blevesearch/bleve

★ 11,231 · Go · Apache-2.0 · updated Sep 2026

A modern text/numeric/geo-spatial/vector indexing library for go

Bleve is an embeddable, pure-Go search library — think Lucene but linked straight into your binary instead of running as a separate service. It handles full-text, numeric, geo, and vector search in one index, which makes it a good fit for Go services that want real search without standing up Elasticsearch or Solr.

The scorch storage engine plus the pluggable analyzer system gives you 30+ language analyzers out of the box (stemming, stop words, normalization) without pulling in ICU or external dependencies. Hybrid search with RRF/RSF fusion means you can combine BM25 and vector kNN in one query instead of running two systems and merging results yourself. The bundled CLI (`bleve dump`, `bleve check`, `bleve dictionary`) is genuinely useful for debugging what's actually in an index without writing throwaway Go code. It's a real embedded library — no server process, no network hop, index lives on disk next to your app.

Being embedded is also the ceiling: there's no clustering, replication, or sharding story here, so once a single index outgrows one machine you're building that infrastructure yourself. Vector search is approximate kNN with no detail in the docs on how well metadata filtering composes with the vector query at scale — worth load-testing before trusting it for a hybrid-heavy workload. The query string syntax is bleve's own DSL, not Lucene-compatible, so any tooling or team knowledge built around Lucene/ES query syntax doesn't transfer. Index format has changed across major versions before (scorch replaced earlier backends), so upgrading an existing production index isn't necessarily a drop-in version bump.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →