Manticore Search: A High‑Performance Open‑Source Search Engine and Its Practical Usage
Manticore Search, a C++‑based open‑source search engine derived from Sphinx, offers superior speed, lower cost, and rich features compared with Elasticsearch, and can be quickly deployed via Docker with SQL‑compatible queries and extensive client support.
Manticore Search is a high‑performance search engine written in C++, created in 2017 as a successor to Sphinx Search. It rewrites and extends Sphinx, fixing hundreds of bugs and delivering a modern, fast, lightweight, and feature‑rich database with excellent full‑text search capabilities.
On GitHub it has gathered over 4.4k stars and is promoted by its authors as a strong alternative to Elasticsearch, with claims of up to 15× speed improvements in certain scenarios.
Advantages
Significantly faster and more cost‑effective than alternatives; e.g., 182× faster than MySQL on small data, 29× faster than Elasticsearch for log analysis, and up to 15× faster on small datasets.
Modern multithreaded architecture fully utilizes CPU cores for rapid response times.
Powerful full‑text search that handles both small and large datasets, with row‑level and columnar storage options.
Automatic secondary index creation and an optimizer that reduces query cost.
SQL‑based native syntax compatible with the MySQL protocol, allowing use of standard MySQL clients.
Supports HTTP JSON protocol for flexible data and schema management.
Built with C++ for fast startup, minimal memory usage, and low‑level optimizations.
Real‑time insertion, built‑in replication, load balancing, and easy synchronization from MySQL, PostgreSQL, ODBC, XML, CSV, etc.
Transaction and binlog support for safe writes, plus backup and restore tools.
Usage
The Docker image is available on Docker Hub. To start a container:
docker run -e EXTRA=1 --name manticore --rm -d manticoresearch/manticore && \
until docker logs manticore 2>&1 | grep -q "accepting connections"; do sleep 1; done && \
docker exec -it manticore mysql && docker stop manticoreAfter the container is running, you can create tables, insert data, and perform searches, for example:
create table movies(title text, year int) morphology='stem_en' html_strip='1' stopwords='en';
insert into movies(title, year) values
('The Seven Samurai', 1954),
('Bonnie and Clyde', 1954),
('Reservoir Dogs', 1992),
('Airplane!', 1980),
('Raging Bull', 1980),
('Groundhog Day', 1993),
('<a href="http://google.com/">Jurassic Park</a>', 1993),
('Ferris Bueller\'s Day Off', 1986);
select highlight(), year from movies where match('the dog');
select highlight(), year from movies where match('days') facet year;
select highlight(), year from movies where match('google');Full documentation and source code are available at the official GitHub repository.
https://github.com/manticoresoftware/manticoresearch
Companies such as Craigslist, Socialgist, PubChem, and Rozetka already use Manticore Search for efficient search and stream filtering.
Architect's Guide
Dedicated to sharing programmer-architect skills—Java backend, system, microservice, and distributed architectures—to help you become a senior architect.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.