Repo of the Day
typesense/typesense
Published: Mar 3, 2026
Open repository ↗Open Source alternative to Algolia + Pinecone and an Easier-to-Use alternative to ElasticSearch ⚡ 🔍 ✨ Fast, typo tolerant, in-memory fuzzy Search Engine for building delightful search experiences
Summary
Typesense is an open source, in-memory search engine written in C++ that delivers typo-tolerant, low-latency full-text search as a single self-contained binary. The project positions itself as a developer-friendly alternative to Algolia and Elasticsearch, offering features like faceting, geo search, and vector/semantic search without runtime dependencies. It's distributed under the GPL-3.0 license, with official client libraries in JavaScript, PHP, Python, and Ruby.
What it is useful for
Typesense fits situations where a team needs to add search to an application quickly and wants sensible behavior out of the box, including typo handling without extra tuning. The README documents faceting and filtering, dynamic sorting at query time, geo search by lat/long or bounding box, grouping/distinct, federated search across multiple collections in one HTTP request, and synonyms. It also covers more advanced use cases: vector search for nearest-neighbor lookups, hybrid keyword-plus-semantic search with built-in models like S-BERT and E-5 (or OpenAI/PaLM), built-in conversational search (RAG), image search via CLIP, JOINs between collections, scoped API keys for multi-tenant apps, and Raft-based clustering for high availability. Reported benchmark numbers in the README include 104 concurrent search queries per second at 11ms average latency on 2.2M recipes and 250 concurrent queries per second on a 3-node HA cluster indexing 3M products.
Documented limitations: Typesense currently lacks personalization and server-side search analytics (features Algolia offers), and the server is GPL-3.0, which may affect teams with strict copyleft policies.
How engineers can use it
The README documents three install paths: download a binary package for Linux (x86_64/arm64) or Mac, pull the official Docker image, or use the managed Typesense Cloud.
To run a local server via Docker (from the Quick Start):
docker run -p 8108:8108 -v/tmp/data:/data typesense/typesense:29.0 --data-dir /data --api-key=Hu52dwsas2AdxdE
Then install a client, e.g.:
pip install typesense
The README's worked example defines a companies collection with company_name, num_employees, and country fields, indexes one document, and searches with q='stork' against company_name — Typesense matches "Stark Industries" because it tolerates the typo. Community clients are listed for Go, Java, .NET, Rust, Dart, and others, and framework integrations cover Laravel, WordPress, Gatsby, Docusaurus, and Symfony. For local development or contributing, the README documents building from source with Bazel, which requires a C++11-compatible compiler, Snappy, zlib, OpenSSL (>=1.0.2), curl, and ICU. Full API and configuration details are in the linked documentation site.