Open-source database for search applications

Lightweight SQL-first database designed for search applications that suits both big and small data collections

Typical use cases

Interactive courses​

To make things easier for our users we have made an interactive learning and training platform where you can try out live different Manticore Search's capabilities.

We are trusted by

Developers first

//CREATE INDEX
CREATE TABLE products(title text, price FLOAT);
//ADD documents
INSERT INTO products(title,price) VALUES ('Crossbody Bag with Tassel', 19.85), ('microfiber sheet set', 19.99), ('Pet Hair Remover Glove', 7.99);
//SEARCH
SELECT id, HIGHLIGHT(), price FROM products WHERE MATCH('remove hair');
//CREATE INDEX
curl -X POST http://127.0.0.1:9308/SQL -d 'mode=raw&query=create table products(title text, price float)'
//ADD documents
curl -X POST http://127.0.0.1:9308/INSERT -d '{"index":"products", "doc":{"title":"Crossbody Bag with Tassel","price":19.85}}'
curl -X POST http://127.0.0.1:9308/INSERT -d '{"index":"products","doc":{"title":"microfiber sheet set","price":19.99}}'
curl -X POST http://127.0.0.1:9308/INSERT -d '{"index":"products","doc":{"title":"Pet Hair Remover Glove","price":7.99}}'
//SEARCH 
curl -X POST http://127.0.0.1:9308/SEARCH -d '{"index":"products","query":{"match":{"title":"remove hair"}},"highlight":{"fields":["title"]}}'
// https://github.com/manticoresoftware/manticoresearch-php
require_once __DIR__ . '/vendor/autoload.php';
$config = ['host'=>'127.0.0.1','port'=>9308];
$client = new \Manticoresearch\Client($config);
//create index
$index = new \Manticoresearch\Index($client);
$index->setName('products');
$index->create([
    'title'=>['type'=>'text'],
    'price'=>['type'=>'float'],
]);
//add documents
$index->addDocuments([
        ['title' => 'Crossbody Bag with Tassel', 'price' => 19.85],
        ['title' => 'microfiber sheet set', 'price' => 19.99],
        ['title' => 'Pet Hair Remover Glove', 'price' => 7.99]
]);
//search
$result = $index->search('@title remove hair')->highlight(['title'])->get();
// https://github.com/manticoresoftware/manticoresearch-python
import manticoresearch
config = manticoresearch.Configuration(
    host = "http://127.0.0.1:9308"
)
client =  manticoresearch.ApiClient(config)
indexApi = manticoresearch.IndexApi(client)
searchApi = manticoresearch.SearchApi(client)
utilsApi = manticoresearch.UtilsApi(client)
//create index
utilsApi.sql('mode=raw&query=create table forum(title text, price float)')
//add documents
indexApi.insert({"index" : "test", "doc" : {"title" : "Crossbody Bag with Tassel", "price" : 19.85}})
indexApi.insert({"index" : "test", "doc" : {"title" : "microfiber sheet set", "price" : 19.99}})
indexApi.insert({"index" : "test", "doc" : {"title" : "Pet Hair Remover Glove", "price" : 7.99}})
//search
searchApi.search({"index":"myindex","query":{"query_string":"@title remove hair"},"highlight":{"fields":["title"]}})
// https://github.com/manticoresoftware/manticoresearch-javascript
var Manticoresearch = require('manticoresearch');
var client = new Manticoresearch.ApiClient()
client.basePath = "http://127.0.0.1:9308";
indexApi = new Manticoresearch.IndexApi(client);
searchApi = new Manticoresearch.SearchApi(client);
utilsApi = new Manticoresearch.UtilsApi(client);
//create index
res = await utilsApi.sql('mode=raw&query=create table forum(title text, price float)');
//add documents
res = await indexApi.insert({"index" : "test", "doc" : {"title" : "Crossbody Bag with Tassel", "price" : 19.85}});
res = await indexApi.insert({"index" : "test", "doc" : {"title" : "microfiber sheet set", "price" : 19.99}});
res = await indexApi.insert({"index" : "test", "doc" : {"title" : "Pet Hair Remover Glove", "price" : 7.99}});
//search
res = await searchApi.search({"index":"myindex","query":{"query_string":"@title remove hair"},"highlight":{"fields":["title"]}});
// https://github.com/manticoresoftware/manticoresearch-java
import com.manticoresearch.client.*;
import com.manticoresearch.client.model.*;
import com.manticoresearch.client.api.*;
ApiClient client = Configuration.getDefaultApiClient();
client.setBasePath("http://127.0.0.1:9308");
IndexApi indexApi = new IndexApi(client);
SearchApi searchApi = new SearchApi(client);
UtilsApi utilsApi = new UtilsApi(client);
//create index
utilsApi.sql("mode=raw&query=create table products(title text, price float)");

We understand that different developers prefer different ways of communicating with databases. That’s why Manticore Search, being natively SQL database can be used differently too: 

  • 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.
  • Manticore Search also has various clients for quick and easy integration.

What is Manticore Search

Manticore Search is an open-source search engine that was born in 2017 as a continuation of the famous Sphinx Search engine. We took all the best from that, significantly improved its functionality, fixed hundreds of bugs, and rewrote it almost completely internally. And left it all open-sourced! That’s what makes Manticore Search a modern, fast and light-weight full-featured search engine.

We have designed and developed Manticore to provide you with multi-functional relevant search capabilities with high performance and low resource consumption and importantly easily integrable. It doesn’t matter what environment you are using, whether it’s Windows, Linux, MacOS or Docker, you can always use Manticore Search and connect to it from different programming languages or HTTP via JSON or even using MySQL client. 

Driven by the industry’s high standards and our clients’ needs, we made Manticore easily scalable, so no matter what kind of tasks you need to solve, search on a site or building multilingual directory with petabyte data coming from different sources, all this you can do with our open-source search engine.