⚠️ Эта страница автоматически переведена, и перевод может быть несовершенным.

🚀 Производительность
которую вы ищете

Производительность движет развитием Manticore Search. Мы стремимся достичь низкого времени отклика, что критически важно для анализа больших наборов данных. Пропускная способность также является ключевым фактором, позволяя Manticore обрабатывать большое количество запросов в секунду. Manticore Search — самый быстрый открытый поисковый движок для больших данных и векторного поиска.

Экономичный поисковый движок

Manticore Search — самая удобная, доступная и экономичная база данных для поиска. Мы превосходим в эффективности даже на небольших VM/контейнерных конфигурациях с минимальными ресурсами, такими как 1 ядро и 1 ГБ памяти, при этом по‑прежнему обеспечивая впечатляющую скорость . Manticore Search разработан для обработки широкого спектра сценариев использования и предлагает мощную производительность при экономии ресурсов для операций любого масштаба. Ознакомьтесь с нашими бенчмарками здесь , чтобы увидеть, как Manticore превосходит другие решения в различных сценариях.

Экономичный поисковый движок

Векторный поиск

Откройте мощные возможности семантического и векторного поиска с Manticore Search. Узнайте больше, изучив наши статьи о Vector Search in Manticore и Integrating Vector Search into GitHub .

Векторный поиск

Альтернатива Elasticsearch

Manticore Search — мощная альтернатива Elasticsearch. Интегрируйте её с Logstash and Beats , чтобы увидеть улучшение производительности до 29‑кратного ускорения по сравнению с Elasticsearch при обработке набора данных из 10 млн журналов Nginx. Для анализа журналов Manticore также бесшовно работает с Kibana, обеспечивая лучшую производительность. Узнайте больше в нашем сравнении: Manticore Search vs. Elasticsearch for Log Analysis . Исследуйте, как Manticore повышает скорость поиска в различных сценариев использования .

Альтернатива Elasticsearch

Профессиональные услуги

Хотя Manticore является 100 % открытым исходным кодом, мы готовы помочь вам извлечь из него максимум!

Консалтинг: Сэкономьте время и ресурсы вашей команды, ускоряя разработку
Тонкая настройка: Обеспечьте работу вашего экземпляра на пиковой производительности
Разработка функций: Получите индивидуальные функции, адаптированные к потребностям вашего бизнеса

Узнайте больше о полном спектре наших услуг .

Профессиональные услуги

Истинный открытый исходный код

Мы любим открытый исходный код. Manticore Search и другие публично доступные продукты Manticore полностью бесплатны и опубликованы под лицензиями открытого кода, одобренными OSI . Смело вносите вклад на GitHub .

Истинный открытый исходный код

Прост в использовании

Посмотрите, насколько просто использовать Manticore Search с популярными языками программирования.
Настройте и выполните поиск в несколько строк кода менее 1 минуты.

curl localhost:9308/_bulk -H "Content-Type: application/x-ndjson" -d '
{ "index" : { "_index" : "tbl" } }
{ "title" : "Crossbody Bag", "price": 19.85}
{ "index" : { "_index" : "tbl" } }
{ "title" : "microfiber sheet", "price": 19.99}
'

# Search with highlighting
curl localhost:9308/search -d '
{
  "index": "tbl",
  "query": {
    "match": {
      "*": "bag"
    }
  },
  "highlight": {
    "fields": ["title"]
  }
}'
create table products(title text, price float) morphology='stem_en';
insert into products(title,price) values ('Crossbody Bag with Tassel', 19.85), ('microfiber sheet set', 19.99), ('Pet Hair Remover Glove', 7.99);
select id, highlight(), price from products where match('remove hair');
curl "localhost:9308/sql?mode=raw" -d "INSERT INTO mytable (title, price) VALUES ('Crossbody Bag', 19.85), ('microfiber sheet', 19.99)"

curl localhost:9308/sql -d "SELECT *, HIGHLIGHT() FROM mytable WHERE MATCH('bag')"
use Manticoresearch\{Index, Client};
$client = new Client(['host'=>'127.0.0.1','port'=>9308]);
$table = $client->index('products');
$table->addDocument(['title' => 'Crossbody Bag', 'price' => 19.85]);
$table->addDocument(['title' => 'microfiber sheet', 'price' => 19.99]);

# Search with highlighting
$result = $table->search('bag')->highlight(['title'])->get();
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);
res = await indexApi.insert({"index": "products", "doc" : {"title" : "Crossbody Bag with Tassel", "price" : 19.85}});
res = await indexApi.insert({"index": "products", "doc" : {"title" : "microfiber sheet set", "price" : 19.99}});
res = await searchApi.search({"index": "products", "query": {"query_string": "@title bag"}, "highlight": {"fieldnames": ["title"]}});
import {Configuration, IndexApi, SearchApi, UtilsApi} from "manticoresearch-ts";
const config = new Configuration({
	basePath: 'http://localhost:9308',
})
const indexApi = new IndexApi(config);
const searchApi = new SearchApi(config);
await indexApi.insert({index : 'products', id : 1, doc : {title : 'Crossbody Bag with Tassel'}});
await indexApi.insert({index : 'products', id : 2, doc : {title : 'Pet Hair Remover Glove'}});
const res = await searchApi.search({
	index: 'products',
	query: { query_string: {'bag'} },
});
import manticoresearch
config = manticoresearch.Configuration(
    host = "http://127.0.0.1:9308"
)
client = manticoresearch.ApiClient(config)
indexApi = manticoresearch.IndexApi(client)
searchApi = manticoresearch.SearchApi(client)
indexApi.insert({"index": "products", "doc" : {"title" : "Crossbody Bag with Tassel", "price" : 19.85}})
indexApi.insert({"index": "products", "doc" : {"title" : "Pet Hair Remover Glove", "price" : 7.99}})
searchApi.search({"index": "products", "query": {"query_string": "@title bag"}, "highlight":{"fieldnames":["title"]}})
import manticoresearch
config = manticoresearch.Configuration(
    host = "http://127.0.0.1:9308"
)
with manticoresearch.ApiClient(configuration) as client:
    indexApi = manticoresearch.IndexApi(client)
    searchApi = manticoresearch.SearchApi(client)
    await indexApi.insert({"index": "products", "doc" : {"title" : "Crossbody Bag with Tassel", "price" : 19.85}})
    await indexApi.insert({"index": "products", "doc" : {"title" : "Pet Hair Remover Glove", "price" : 7.99}})
    await searchApi.search({"index": "products", "query": {"query_string": "@title bag"}, "highlight":{"fieldnames":["title"]}})
import (
	"context"
	manticoreclient "github.com/manticoresoftware/manticoresearch-go"
)
configuration := manticoreclient.NewConfiguration()
configuration.Servers[0].URL = "http://localhost:9308"
apiClient := manticoreclient.NewAPIClient(configuration)

tableName := "products"
indexDoc := map[string]interface{} {"title": "Crossbody Bag with Tassel"}
indexReq := manticoreclient.NewInsertDocumentRequest(tableName, indexDoc)
indexReq.SetId(1)
apiClient.IndexAPI.Insert(context.Background()).InsertDocumentRequest(*indexReq).Execute();

indexDoc = map[string]interface{} {"title": "Pet Hair Remover Glove"}
indexReq = manticoreclient.NewInsertDocumentRequest(tableName, indexDoc)
indexReq.SetId(2)
apiClient.IndexAPI.Insert(context.Background()).InsertDocumentRequest(*indexReq).Execute()

searchRequest := manticoreclient.NewSearchRequest(tableName)
query := map[string]interface{} {"query_string": "bag"}
searchRequest.SetQuery(query)

res, _, _ := apiClient.SearchAPI.Search(context.Background()).SearchRequest(*searchRequest).Execute()
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);

// Insert document 1
InsertDocumentRequest newdoc = new InsertDocumentRequest();
HashMap<String,Object> doc = new HashMap<String,Object>(){{
    put("title", "Crossbody Bag with Tassel");
    put("price", 19.85);
}};
newdoc.index("products").setDoc(doc);
sqlresult = indexApi.insert(newdoc);

// Insert document 2
newdoc = new InsertDocumentRequest();
doc = new HashMap<String,Object>(){{
    put("title","microfiber sheet set");
    put("price", 19.99);
}};
newdoc.index("products").setDoc(doc);
sqlresult = indexApi.insert(newdoc);

// Search
query = new HashMap<String,Object>();
query.put("query_string", "@title bag");
searchRequest = new SearchRequest();
searchRequest.setIndex("products");
searchRequest.setQuery(query);

Highlight highlight = new Highlight();
highlight.setFieldnames( Arrays.asList("title") );
searchRequest.setHighlight(highlight);

searchResponse = searchApi.search(searchRequest);
use manticoresearch::{
  apis::{
    {configuration::Configuration,IndexApi,IndexApiClient,SearchApi,SearchApiClient}
  },
  models::{InsertDocumentRequest,SearchRequest,SearchQuery,Highlight}
};

let api_config = Arc::new(Configuration::new());
let index_api = IndexApiClient::new(api_config.clone());
let search_api = SearchApiClient::new(api_config.clone());

// Create documents 
let doc = serde_json::json!({"title": "Crossbody Bag with Tassel", "price": 19.85});
let insert_request = InsertDocumentRequest {
  table: "products",
  doc: doc,
  ..Default::default()
};
  
let _ = index_api.insert(insert_request).await;

// Prepare search request
let query = SearchQuery {
   query_string: Some(serde_json::json!("Star").into()),
   ..Default::default()
};

let highlight = Highlight {
   fields: Some(serde_json::json!(["title"]).into()),
   ..Default::default()
};

let mut options = HashMap::new();
options.insert("cutoff".to_string(), serde_json::json!(5));
options.insert("ranker".to_string(), serde_json::json!("bm25"));

let search_request = SearchRequest {
  table: "movies".to_string(),
  query: Some(Box::new(query)),
  highlight: Some(Box::new(highlight)),
  options: Some(serde_json::json!(options)),
  ..Default::default()
};

 // Perform search
 let search_response = search_api.search(search_request).await;

Что говорят люди о Manticore Search

Не просто верьте нам на слово, послушайте, что говорят наши замечательные пользователи!

Мы ежедневно полагаемся на Manticore как на основу нашего сервиса текстового анализа, используя как его мощный ядровой движок, так и Python API. Поддержка со стороны команды Manticore исключительна — они всегда отзывчивы, компетентны и готовы помочь. Среди множества его сильных сторон мы особенно ценим: - Эффективные массовые вставки/обновления для операций с высокой пропускной способностью. - Бесшовную интеграцию с контейнерами, упрощающую развертывание и масштабирование. - Гибкую функцию match(), позволяющую выполнять точные и настраиваемые запросы. После оценки нескольких решений с похожими возможностями мы выбрали Manticore за его непревзойденную гибкость и богатый набор функций.

orazs
orazs

Я использую сам движок и клиенты для Go и PHP. Я выбрал Manticore, потому что он с открытым исходным кодом, легко интегрируется, у него отзывчивая команда разработчиков и он не требует много аппаратных ресурсов. Очень положительный опыт — движок дал огромный прирост производительности и открыл возможности для новых сервисов.

Alisher Rusinov
Alisher Rusinov

Flumtec

Мне нравится Manticore Search за его низкое потребление ресурсов. Elasticsearch как альтернатива требует больше ресурсов из‑за Java. Документация могла бы более ясно объяснять фасетный и префиксный поиск. В целом, он мне очень нравится — я ещё не использовал его в продакшене, но скоро начну. Огромное спасибо сообществу за рекомендацию Manticore!

Roman
Roman

Python Backend Dev

Я узнал о Manticore на работе в https://poisk.im/ (Сайт, где мы используем Manticore). Документация отличная, продукт быстрый, и в целом он надёжен — я бы оценил его 8/10. Хотелось бы видеть такие функции, как ассоциативный поиск, векторный поиск и нечеткий поиск, доступные через HTTP, а не только через SQL.

Flild
Flild

Backend developer in notissimus

Мы нашли Manticore, ищя альтернативу Meilisearch. В нашем случае он оказался более надёжным, гибким и предсказуемым, чем Meilisearch. Было бы здорово иметь подготовленные запросы в режиме SQL и автоматическую оптимизацию без балансировщика. В целом, всё хорошо.

Max Besogonov
Max Besogonov

Developer at @thermos

Я использую Manticore для полнотекстового поиска и мне нравится, насколько быстры запросы. Я бы оценил его 7/10 — в некоторых местах сообщения об ошибках требуют более ясного формулирования, но команда поддержки отличная, и я верю, что проект будет продолжать улучшаться.

Ali Suliman
Ali Suliman

Developer at BeInMedia

Manticoresearch быстрый, справляется с высокой нагрузкой даже на слабых серверах, а конфигурации очень гибкие. Он супер стабильный — я использую версию 4 в продакшене и готовлюсь перейти на версию 9. Если чего‑то не хватает, я обычно решаю это в пользовательском коде. В целом, мой опыт очень положительный — документация и канал поддержки в Telegram помогают со всем.

Yuri (godem111)
Yuri (godem111)

Мы используем Manticore Search уже более 5 лет. Он гибкий, простой в настройке и хорошо масштабируется с большими индексами. Нам бы хотелось видеть более продвинутые варианты группировки, такие как медиана, и возможность использовать функции вроде month() и day() с поддержкой часовых поясов. В целом, наш опыт очень положительный — мы перешли с Sphinx давно из‑за его ограниченных возможностей. Некоторый контекст: - Индексированных документов: ~100м - Индексированных байт: 35TiB (в будущем планируем увеличить это число до 100)

sabnak
sabnak

Я использую manticore search и библиотеку columnar — это полное и простое поисковое решение, покрывающее все мои задачи. Он быстрый, масштабируемый, с открытым исходным кодом и поддерживает протокол mysql и геопоиск. Я бы оценил его 9/10. Хотелось бы лучшую документацию для непрофессионалов, более простой импорт данных и, возможно, поддержку Parquet. Нашёл его после попыток использовать Sphinx и другие инструменты — Manticore просто работает лучше.

blackrez
blackrez

Одной из определяющих особенностей Manticore, которая сразу привлекла мое внимание, была его замечательная скорость. Возможность взаимодействовать с сервисом через JSON обеспечила гибкий и современный подход к обработке поисковых запросов, хорошо сочетающийся с текущими практиками разработки. Мой общий опыт работы с Manticore несколько противоречив. С одной стороны, я действительно наслаждался возможностями, которые он предоставляет, особенно производительностью и методом коммуникации через JSON. Эти аспекты значительно повысили эффективность и адаптивность моих проектов. С другой стороны, освоение Manticore стало путешествием, требующим тщательного погружения в его руководство. Кривая обучения, хотя и не непреодолимая, потребовала значительного времени и усилий. Активное сообщество и форум поддержки также внесли значительный вклад в процесс поиска решений возникающих проблем. Замечательной сложностью стала сильная ориентация на SQL, включая обучающие материалы, которые, будучи всеобъемлющими, создали крутой путь обучения для тех, кто более привык к системам, ориентированным на JSON. Несмотря на эти трудности, мой опыт с Manticore в целом положительный. Сочетание скорости, гибкости и мощных поисковых возможностей, которые он предлагает, оказалось бесценным. В дальнейшем я надеюсь увидеть более широкий спектр обучающих ресурсов, ориентированных как на ветеранов SQL, так и на тех, кто более комфортно работает с JSON. Manticore имеет потенциал стать универсальным инструментом в области поисковых технологий, и я с нетерпением жду дальнейшего изучения его возможностей.

THE-KONDRAT
THE-KONDRAT

Мы ежедневно полагаемся на Manticore как на основу нашего сервиса текстового анализа, используя как его мощный ядровой движок, так и Python API. Поддержка со стороны команды Manticore исключительна — они всегда отзывчивы, компетентны и готовы помочь. Среди множества его сильных сторон мы особенно ценим: - Эффективные массовые вставки/обновления для операций с высокой пропускной способностью. - Бесшовную интеграцию с контейнерами, упрощающую развертывание и масштабирование. - Гибкую функцию match(), позволяющую выполнять точные и настраиваемые запросы. После оценки нескольких решений с похожими возможностями мы выбрали Manticore за его непревзойденную гибкость и богатый набор функций.

orazs
orazs

Я использую сам движок и клиенты для Go и PHP. Я выбрал Manticore, потому что он с открытым исходным кодом, легко интегрируется, у него отзывчивая команда разработчиков и он не требует много аппаратных ресурсов. Очень положительный опыт — движок дал огромный прирост производительности и открыл возможности для новых сервисов.

Alisher Rusinov
Alisher Rusinov

Flumtec

Мне нравится Manticore Search за его низкое потребление ресурсов. Elasticsearch как альтернатива требует больше ресурсов из‑за Java. Документация могла бы более ясно объяснять фасетный и префиксный поиск. В целом, он мне очень нравится — я ещё не использовал его в продакшене, но скоро начну. Огромное спасибо сообществу за рекомендацию Manticore!

Roman
Roman

Python Backend Dev

Я узнал о Manticore на работе в https://poisk.im/ (Сайт, где мы используем Manticore). Документация отличная, продукт быстрый, и в целом он надёжен — я бы оценил его 8/10. Хотелось бы видеть такие функции, как ассоциативный поиск, векторный поиск и нечеткий поиск, доступные через HTTP, а не только через SQL.

Flild
Flild

Backend developer in notissimus

Мы нашли Manticore, ищя альтернативу Meilisearch. В нашем случае он оказался более надёжным, гибким и предсказуемым, чем Meilisearch. Было бы здорово иметь подготовленные запросы в режиме SQL и автоматическую оптимизацию без балансировщика. В целом, всё хорошо.

Max Besogonov
Max Besogonov

Developer at @thermos

Я использую Manticore для полнотекстового поиска и мне нравится, насколько быстры запросы. Я бы оценил его 7/10 — в некоторых местах сообщения об ошибках требуют более ясного формулирования, но команда поддержки отличная, и я верю, что проект будет продолжать улучшаться.

Ali Suliman
Ali Suliman

Developer at BeInMedia

Manticoresearch быстрый, справляется с высокой нагрузкой даже на слабых серверах, а конфигурации очень гибкие. Он супер стабильный — я использую версию 4 в продакшене и готовлюсь перейти на версию 9. Если чего‑то не хватает, я обычно решаю это в пользовательском коде. В целом, мой опыт очень положительный — документация и канал поддержки в Telegram помогают со всем.

Yuri (godem111)
Yuri (godem111)

Мы используем Manticore Search уже более 5 лет. Он гибкий, простой в настройке и хорошо масштабируется с большими индексами. Нам бы хотелось видеть более продвинутые варианты группировки, такие как медиана, и возможность использовать функции вроде month() и day() с поддержкой часовых поясов. В целом, наш опыт очень положительный — мы перешли с Sphinx давно из‑за его ограниченных возможностей. Некоторый контекст: - Индексированных документов: ~100м - Индексированных байт: 35TiB (в будущем планируем увеличить это число до 100)

sabnak
sabnak

Я использую manticore search и библиотеку columnar — это полное и простое поисковое решение, покрывающее все мои задачи. Он быстрый, масштабируемый, с открытым исходным кодом и поддерживает протокол mysql и геопоиск. Я бы оценил его 9/10. Хотелось бы лучшую документацию для непрофессионалов, более простой импорт данных и, возможно, поддержку Parquet. Нашёл его после попыток использовать Sphinx и другие инструменты — Manticore просто работает лучше.

blackrez
blackrez

Одной из определяющих особенностей Manticore, которая сразу привлекла мое внимание, была его замечательная скорость. Возможность взаимодействовать с сервисом через JSON обеспечила гибкий и современный подход к обработке поисковых запросов, хорошо сочетающийся с текущими практиками разработки. Мой общий опыт работы с Manticore несколько противоречив. С одной стороны, я действительно наслаждался возможностями, которые он предоставляет, особенно производительностью и методом коммуникации через JSON. Эти аспекты значительно повысили эффективность и адаптивность моих проектов. С другой стороны, освоение Manticore стало путешествием, требующим тщательного погружения в его руководство. Кривая обучения, хотя и не непреодолимая, потребовала значительного времени и усилий. Активное сообщество и форум поддержки также внесли значительный вклад в процесс поиска решений возникающих проблем. Замечательной сложностью стала сильная ориентация на SQL, включая обучающие материалы, которые, будучи всеобъемлющими, создали крутой путь обучения для тех, кто более привык к системам, ориентированным на JSON. Несмотря на эти трудности, мой опыт с Manticore в целом положительный. Сочетание скорости, гибкости и мощных поисковых возможностей, которые он предлагает, оказалось бесценным. В дальнейшем я надеюсь увидеть более широкий спектр обучающих ресурсов, ориентированных как на ветеранов SQL, так и на тех, кто более комфортно работает с JSON. Manticore имеет потенциал стать универсальным инструментом в области поисковых технологий, и я с нетерпением жду дальнейшего изучения его возможностей.

THE-KONDRAT
THE-KONDRAT

Установить Manticore Search

Установить Manticore Search