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

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

Производительность движет развитием 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 -sS "http://127.0.0.1:9308/sql?mode=raw" -d "DROP TABLE IF EXISTS products"
curl -sS "http://127.0.0.1:9308/sql?mode=raw" -d "CREATE TABLE products(title text, price float) morphology='stem_ru'"

curl -sS "http://127.0.0.1:9308/_bulk" -H "Content-Type: application/x-ndjson" -d '
  { "index" : { "_index" : "products" } }
  { "title": "Сумка через плечо с кисточкой", "price": 19.85 }
  { "index" : { "_index" : "products" } }
  { "title": "Комплект простыней из микрофибры", "price": 19.99 }
  { "index" : { "_index" : "products" } }
  { "title": "Перчатка для удаления шерсти питомцев", "price": 7.99 }
'

curl -sS "http://127.0.0.1:9308/search" -d '{
  "index": "products",
  "query": { "query_string": "@title сумка" },
  "highlight": { "fields": ["title"] }
}'
mysql -P9306 -h0 -e "DROP TABLE IF EXISTS products"
mysql -P9306 -h0 -e "CREATE TABLE products(title text, price float) morphology='stem_ru'"

mysql -P9306 -h0 -e "INSERT INTO products (id, title, price) VALUES
  (1, 'Сумка через плечо с кисточкой', 19.85),
  (2, 'Комплект простыней из микрофибры', 19.99),
  (3, 'Перчатка для удаления шерсти питомцев', 7.99)"

mysql -P9306 -h0 -e "SELECT id, HIGHLIGHT(), price FROM products WHERE MATCH('@title сумка')"
curl -sS "http://127.0.0.1:9308/sql?mode=raw" -d "DROP TABLE IF EXISTS products"
curl -sS "http://127.0.0.1:9308/sql?mode=raw" -d "CREATE TABLE products(title text, price float) morphology='stem_ru'"
curl -sS "http://127.0.0.1:9308/sql?mode=raw" -d "INSERT INTO products (id, title, price) VALUES (1,'Сумка через плечо с кисточкой',19.85),(2,'Комплект простыней из микрофибры',19.99),(3,'Перчатка для удаления шерсти питомцев',7.99)"

curl -sS "http://127.0.0.1:9308/sql" -d "SELECT id, HIGHLIGHT(), price FROM products WHERE MATCH('@title сумка')" 
<?php
require __DIR__ . '/vendor/autoload.php';

use Manticoresearch\Client;

$client = new Client(['host' => '127.0.0.1', 'port' => 9308]);
$table  = $client->table('products');

$table->drop(true);
$table->create([
   'title' => ['type' => 'text'],
   'price' => ['type' => 'float'],
]);

$table->addDocument(['title' => 'Сумка через плечо с кисточкой', 'price' => 19.85], 1);
$table->addDocument(['title' => 'Комплект простыней из микрофибры', 'price' => 19.99], 2);
$table->addDocument(['title' => 'Перчатка для удаления шерсти питомцев', 'price' => 7.99], 3);

$result = $table
    ->search('@title сумка')
    ->highlight(['title'])
    ->get();

print_r($result);
const Manticoresearch = require('manticoresearch');

async function main() {
  const client = new Manticoresearch.ApiClient();
  client.basePath = 'http://127.0.0.1:9308';

  const indexApi = new Manticoresearch.IndexApi(client);
  const searchApi = new Manticoresearch.SearchApi(client);
  const utilsApi = new Manticoresearch.UtilsApi(client);

  await utilsApi.sql('DROP TABLE IF EXISTS products');
  await utilsApi.sql("CREATE TABLE products(title text, price float) morphology='stem_ru'");

  await indexApi.insert({ index: 'products', id: 1, doc: { title: 'Сумка через плечо с кисточкой', price: 19.85 } });
  await indexApi.insert({ index: 'products', id: 2, doc: { title: 'Комплект простыней из микрофибры', price: 19.99 } });
  await indexApi.insert({ index: 'products', id: 3, doc: { title: 'Перчатка для удаления шерсти питомцев', price: 7.99 } });

  const res = await searchApi.search({
    index: 'products',
    query: { query_string: '@title сумка' },
    highlight: { fields: { title: {} } },
  });

  console.log(JSON.stringify(res, null, 2));
}

main().catch((err) => {
  console.error(err);
});
import {Configuration, IndexApi, SearchApi, UtilsApi} from "manticoresearch-ts";

async function main(): Promise<void> {
  const config = new Configuration({ basePath: "http://127.0.0.1:9308" });

  const utilsApi = new UtilsApi(config);
  const indexApi = new IndexApi(config);
  const searchApi = new SearchApi(config);

  await utilsApi.sql("DROP TABLE IF EXISTS products");
  await utilsApi.sql("CREATE TABLE products(title text, price float) morphology='stem_ru'");

  await indexApi.insert({ index: "products", id: 1, doc: { title: "Сумка через плечо с кисточкой", price: 19.85 } });
  await indexApi.insert({ index: "products", id: 2, doc: { title: "Комплект простыней из микрофибры", price: 19.99 } });
  await indexApi.insert({ index: "products", id: 3, doc: { title: "Перчатка для удаления шерсти питомцев", price: 7.99 } });

  const res = await searchApi.search({
    index: "products",
    query: { query_string: "@title 包" },
    highlight: { fields: ["title"] },
  });

  console.log(JSON.stringify(res, null, 2));

}  

main().catch(console.error);
from __future__ import annotations
from pprint import pprint

import manticoresearch

def main() -> None:
    config = manticoresearch.Configuration(host="http://127.0.0.1:9308")

    with manticoresearch.ApiClient(config) as client:
        index_api = manticoresearch.IndexApi(client)
        search_api = manticoresearch.SearchApi(client)
        utils_api = manticoresearch.UtilsApi(client)

        utils_api.sql("DROP TABLE IF EXISTS products")
        utils_api.sql("CREATE TABLE products(title text, price float) morphology='stem_ru'")

        index_api.insert({"index": "products", "id": 1, "doc": {"title": "Сумка через плечо с кисточкой", "price": 19.85}})
        index_api.insert({"index": "products", "id": 2, "doc": {"title": "Комплект простыней из микрофибры", "price": 19.99}})
        index_api.insert({"index": "products", "id": 3, "doc": {"title": "Перчатка для удаления шерсти питомцев", "price": 7.99}})

        res = search_api.search(
            {
                "index": "products",
                "query": {"query_string": "@title сумка"},
                "highlight": {"fields": {"title": {}}},
            }
        )
        pprint(res)

if __name__ == "__main__":
    main()
from __future__ import annotations
import asyncio
from pprint import pprint

import manticoresearch
        
async def main() -> None:
    config = manticoresearch.Configuration(host="http://127.0.0.1:9308")

    async with manticoresearch.ApiClient(config) as client:
        index_api = manticoresearch.IndexApi(client)
        search_api = manticoresearch.SearchApi(client)
        utils_api = manticoresearch.UtilsApi(client)

        await utils_api.sql("DROP TABLE IF EXISTS products")
        await utils_api.sql("CREATE TABLE products(title text, price float) morphology='stem_ru'")

        await index_api.insert({"index": "products", "id": 1, "doc": {"title": "Сумка через плечо с кисточкой", "price": 19.85}})
        await index_api.insert({"index": "products", "id": 2, "doc": {"title": "Комплект простыней из микрофибры", "price": 19.99}})
        await index_api.insert({"index": "products", "id": 3, "doc": {"title": "Перчатка для удаления шерсти питомцев", "price": 7.99}})

        res = await search_api.search(
            {
                "index": "products",
                "query": {"query_string": "@title сумка"},
                "highlight": {"fields": {"title": {}}},
            }
        )
        pprint(res)

if __name__ == "__main__":
    asyncio.run(main())
package main

import (
	"context"
	"encoding/json"
	"fmt"
	"os"

	Manticoresearch "github.com/manticoresoftware/manticoresearch-go"
)

func main() {
	ctx := context.Background()

	configuration := Manticoresearch.NewConfiguration()
	configuration.Servers[0].URL = "http://127.0.0.1:9308"
	apiClient := Manticoresearch.NewAPIClient(configuration)

	_, _, _ = apiClient.UtilsAPI.Sql(ctx).Body("DROP TABLE IF EXISTS products").Execute()
	_, _, _ = apiClient.UtilsAPI.Sql(ctx).Body("CREATE TABLE products(title text, price float) morphology='stem_ru'").Execute()

	docs := []struct {
		id    int64
		title string
		price float64
	}{
		{1, "Сумка через плечо с кисточкой", 19.85},
		{2, "Комплект простыней из микрофибры", 19.99},
		{3, "Перчатка для удаления шерсти питомцев", 7.99},
	}

	for _, d := range docs {
		indexDoc := map[string]interface{}{
			"title": d.title,
			"price": d.price,
		}
		req := Manticoresearch.NewInsertDocumentRequest("products", indexDoc)
		req.SetId(d.id)

		if _, _, err := apiClient.IndexAPI.Insert(ctx).InsertDocumentRequest(*req).Execute(); err != nil {
			panic(err)
		}
	}

	searchRequest := Manticoresearch.NewSearchRequest("products")
	searchQuery := Manticoresearch.NewSearchQuery()
	searchQuery.QueryString = "@title сумка"
	searchRequest.Query = searchQuery

	hl := Manticoresearch.NewHighlight()
	hl.Fields = map[string]interface{}{"title": map[string]interface{}{}}
	searchRequest.Highlight = hl

	resp, _, err := apiClient.SearchAPI.Search(ctx).SearchRequest(*searchRequest).Execute()
	if err != nil {
		panic(err)
	}

	b, _ := json.MarshalIndent(resp, "", "  ")
	fmt.Println(string(b))
}
using System;
using System.Collections.Generic;
using System.Net.Http;
using ManticoreSearch.Api;
using ManticoreSearch.Client;
using ManticoreSearch.Model;

internal class Program
{
    private static void Main()
    {
        var baseUrl = "http://127.0.0.1:9308";

        var config = new Configuration { BasePath = baseUrl };

        using var httpClientHandler = new HttpClientHandler();
        using var httpClient = new HttpClient(httpClientHandler);

        var utilsApi = new UtilsApi(httpClient, config, httpClientHandler);
        var indexApi = new IndexApi(httpClient, config, httpClientHandler);
        var searchApi = new SearchApi(httpClient, config, httpClientHandler);

        utilsApi.Sql("DROP TABLE IF EXISTS products", true);
        utilsApi.Sql("CREATE TABLE products(title text, price float) morphology='stem_ru'", true);

        var docs = new[]
        {
            new Dictionary<string, object> { ["title"] = "Сумка через плечо с кисточкой", ["price"] = 19.85 },
            new Dictionary<string, object> { ["title"] = "Комплект простыней из микрофибры", ["price"] = 19.99 },
            new Dictionary<string, object> { ["title"] = "Перчатка для удаления шерсти питомцев", ["price"] = 7.99 },
        };

        foreach (var doc in docs)
        {
            var insertRequest = new InsertDocumentRequest(Index: "products", Doc: doc);
            indexApi.Insert(insertRequest);
        }

        var searchRequest = new SearchRequest(Index: "products")
        {
            Query = new SearchQuery { QueryString = "@title сумка" },
            Highlight = new Highlight { Fields = new List<string> { "title" } }
        };

        var searchResponse = searchApi.Search(searchRequest);
        Console.WriteLine(searchResponse);
    }
}
import com.manticoresearch.client.ApiClient;
import com.manticoresearch.client.ApiException;
import com.manticoresearch.client.api.IndexApi;
import com.manticoresearch.client.api.SearchApi;
import com.manticoresearch.client.api.UtilsApi;

public class ManticoreExample {
    public static void main(String[] args) throws ApiException {
        ApiClient client = new ApiClient();
        client.setBasePath("http://127.0.0.1:9308");

        IndexApi indexApi = new IndexApi(client);
        SearchApi searchApi = new SearchApi(client);
        UtilsApi utilsApi = new UtilsApi(client);

        utilsApi.sql("DROP TABLE IF EXISTS products", true);
        utilsApi.sql("CREATE TABLE products(title text, price float) morphology='stem_ru'", true);

        indexApi.insert("{"index":"products","id":1,"doc":{"title":"Сумка через плечо с кисточкой","price":19.85}}");
        indexApi.insert("{"index":"products","id":2,"doc":{"title":"Комплект простыней из микрофибры","price":19.99}}");
        indexApi.insert("{"index":"products","id":3,"doc":{"title":"Перчатка для удаления шерсти питомцев","price":7.99}}");

        String searchRequest = "{"
            + ""index":"products","
            + ""query":{"query_string":"@title сумка"},"
            + ""highlight":{"fields":{"title":{}}}"
            + "}";

        System.out.println(searchApi.search(searchRequest));
    }
}
use manticoresearch::apis::configuration::Configuration;
use manticoresearch::apis::{index_api, search_api, utils_api};
use manticoresearch::models::{
    Highlight, HighlightFieldOption, HighlightFields, SearchQuery, SearchRequest,
};
use serde_json::json;

fn main() {
    let mut config = Configuration::new();
    config.base_path = "http://127.0.0.1:9308".to_string();

    let _ = utils_api::sql(&config, "DROP TABLE IF EXISTS products", None);
    let _ = utils_api::sql(&config, "CREATE TABLE products(title text, price float) morphology='stem_ru'", None);

    let docs = [
        (1, "Сумка через плечо с кисточкой", 19.85),
        (2, "Комплект простыней из микрофибры", 19.99),
        (3, "Перчатка для удаления шерсти питомцев", 7.99),
    ];

    for (id, title, price) in docs {
        let body = json!({
            "index": "products",
            "id": id,
            "doc": { "title": title, "price": price }
        });
        index_api::insert(&config, body, None).unwrap();
    }

    let query = SearchQuery {
        query_string: Some("@title сумка".to_string()),
        ..Default::default()
    };

    let highlight = Highlight {
        fields: Some(HighlightFields {
            title: Some(HighlightFieldOption {
                ..Default::default()
            }),
        }),
        ..Default::default()
    };

    let req = SearchRequest {
        index: "products".to_string(),
        query: Box::new(query),
        highlight: Some(Box::new(highlight)),
        ..Default::default()
    };

    let resp = search_api::search(&config, req, None).unwrap();
    println!("{}", serde_json::to_string_pretty(&resp).unwrap());
}

Что говорят люди о 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