explaingit

blevesearch/bleve

11,031GoAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

Bleve is a Go library you embed directly in your app to add full-text search, including fuzzy matching, geographic search, and vector similarity, with no separate search server required.

Mindmap

mindmap
  root((bleve))
    What it does
      Full-text search
      Vector similarity
      Geographic search
    Query types
      Fuzzy match
      Phrase search
      Range queries
    Tech stack
      Go library
      Disk index
      CLI tool
    Use cases
      App search embed
      Index management
      Semantic search
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Add full-text search to a Go application without running a separate search server like Elasticsearch

USE CASE 2

Build a command-line index manager to add JSON documents, run queries, and inspect field mappings

USE CASE 3

Implement geographic distance search or approximate nearest-neighbor vector search inside a Go service

USE CASE 4

Create a search experience with fuzzy matching and faceted result counts grouped by category or date range

Tech stack

Go

Getting it running

Difficulty · moderate Time to first run · 30min
Use freely for any purpose including commercial, as long as you include the Apache 2.0 license notice and do not use the project name for endorsement.

In plain English

Bleve is a search and indexing library for the Go programming language. You embed it into a Go application to add full-text search capabilities, without needing a separate search server running alongside your app. You give it your Go data structures or JSON documents, and it builds a local index on disk that you can query with a range of search techniques. The library supports several field types: text, numbers, dates, booleans, geographic points and shapes, IP addresses, and vectors. The query options are broad. You can search for exact terms, phrases, prefix matches, wildcard patterns, fuzzy matches (which tolerate slight misspellings), and regular expressions. Range queries work across numeric values and date ranges. Compound queries let you combine conditions with AND, OR, and NOT logic. There is also geographic search for finding results within a distance or shape, approximate nearest-neighbor vector search for semantic similarity, synonym expansion, and hierarchical nested document search. Bleve uses two standard relevance scoring models, tf-idf and BM25, and supports hybrid search that combines exact text matching with vector-based semantic matching using fusion methods to merge the two sets of results. Search results include match highlighting, pagination, and faceting, which is the feature that shows counts like how many results fall into each category or date range. A command-line tool is included for managing indexes directly from the terminal. It can create indexes, add documents from JSON files, count documents, inspect field mappings, and run queries. Text analysis is built in for more than 30 languages, from English and French to Arabic, Chinese, Japanese, Korean, Russian, and Turkish. The project is available under the Apache 2.0 license. Discussion and issue tracking happen on GitHub and a Google group.

Copy-paste prompts

Prompt 1
Show me how to embed Bleve in a Go app, index a set of JSON documents, and run a fuzzy text search
Prompt 2
How do I configure BM25 scoring and return faceted result counts in a Bleve search query?
Prompt 3
Walk me through adding geographic distance search to a Bleve index in Go
Prompt 4
How do I use the Bleve CLI to create an index from JSON files and run a query from the terminal?
Prompt 5
Show me how to combine vector search with text search in Bleve using hybrid score fusion
Open on GitHub → Explain another repo

← blevesearch on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.