Manticore Search is a database designed specifically for search, including full-text search. What differs it from other solutions is:
- Powerful and fast full-text searching which works fine for small and big datasets
- SQL-first: the native Manticore's syntax is SQL. It speaks SQL over HTTP and MySQL protocol (you can use your preferred mysql client)
- JSON over HTTP: to provide more programmatic way to manage your data and schemas Manticore provides HTTP JSON protocol. Very similar to the one from Elasticsearch
- Written fully in C++: starts fast, doesn't take much RAM, low-level optimizations give good performance
- Real-time inserts: after INSERT is made the document can be read immediately
- Interactive courses for easier learning
- Built-in replication and load balancing
- Can sync from MySQL/PostgreSQL/ODBC/xml/csv out of the box
- Not fully ACID-compliant, but supports transactions and binlog for safe writes
Craigslist, Socialgist, PubChem and many others use Manticore for efficient searching and stream filtering.
Manticore Search was forked from Sphinx 2.3.2 in 2017.
- Full-text search and relevance:
- Over 20 full-text operators and over 20 ranking factors
- Custom ranking
- Other search capabilities:
- Rich filtering functionality
- Faceted search
- Geo-spatial search
- Spell correction
- Autocomplete
- Wide range of functions for filtering and data manipulation
- NLP:
- Stream filtering using a "percolate" index
- High-availability:
- Data can be distributed across servers and data-centers
- Synchronous replication
- Built-in load balancing
- Security:
- Data types:
- full-text field - inverted index
- integer and float in-memory numeric fields
- in-memory "string" for fast filtering
- on-disk "stored" for key-value purpose
- JSON
- multi-value attributes
- Integrations:
Docker image is available on Docker Hub.
To play with Manticore Search in Docker just run:
docker run --name manticore --rm -d manticoresearch/manticore && docker exec -it manticore mysql -w && docker stop manticore
You can then: create an index, add data and run 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 * from movies where match('google');
When you exit from the mysql client it stops and removes the container, so use this way only for testing / sandboxing purposes.
Read the full instruction for the docker image for more details including our recommendations on running it in production.
yum install https://repo.manticoresearch.com/manticore-repo.noarch.rpm
yum install manticore
wget https://repo.manticoresearch.com/manticore-repo.noarch.deb
dpkg -i manticore-repo.noarch.deb
apt update
apt install manticore
brew install manticoresearch
See instruction here.
See instruction here.
Should your company require any help - we provide full-cycle services in the areas of Sphinx and Manticore Search:
- Audit
- Support
- Consulting
- Development
- Training
Manticore Search is a GPLv2-licensed open source project with development made possible by support from our core team, contributors, and sponsors. Building premium open-source software is not easy. If you would like to make sure Manticore Search stays free here is how you can help the project: