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

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

Производительность движет развитием 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 и 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_en'"

curl -sS "http://127.0.0.1:9308/_bulk" -H "Content-Type: application/x-ndjson" -d '
  { "index" : { "_index" : "products" } }
  { "title": "Crossbody Bag with Tassel", "price": 19.85 }
  { "index" : { "_index" : "products" } }
  { "title": "microfiber sheet set", "price": 19.99 }
  { "index" : { "_index" : "products" } }
  { "title": "Pet Hair Remover Glove", "price": 7.99 }
'

curl -sS "http://127.0.0.1:9308/search" -d '{
  "index": "products",
  "query": { "query_string": "@title bag" },
  "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_en'"

mysql -P9306 -h0 -e "INSERT INTO products (id, title, price) VALUES
  (1, 'Crossbody Bag with Tassel', 19.85),
  (2, 'microfiber sheet set', 19.99),
  (3, 'Pet Hair Remover Glove', 7.99)"

mysql -P9306 -h0 -e "SELECT id, HIGHLIGHT(), price FROM products WHERE MATCH('@title bag')"
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_en'"
curl -sS "http://127.0.0.1:9308/sql?mode=raw" -d "INSERT INTO products (id, title, price) VALUES (1,'Crossbody Bag with Tassel',19.85),(2,'microfiber sheet set',19.99),(3,'Pet Hair Remover Glove',7.99)"

curl -sS "http://127.0.0.1:9308/sql" -d "SELECT id, HIGHLIGHT(), price FROM products WHERE MATCH('@title bag')" 
<?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' => 'Crossbody Bag with Tassel', 'price' => 19.85], 1);
$table->addDocument(['title' => 'microfiber sheet set', 'price' => 19.99], 2);
$table->addDocument(['title' => 'Pet Hair Remover Glove', 'price' => 7.99], 3);

$result = $table
    ->search('@title bag')
    ->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_en'");

  await indexApi.insert({ index: 'products', id: 1, doc: { title: 'Crossbody Bag with Tassel', price: 19.85 } });
  await indexApi.insert({ index: 'products', id: 2, doc: { title: 'microfiber sheet set', price: 19.99 } });
  await indexApi.insert({ index: 'products', id: 3, doc: { title: 'Pet Hair Remover Glove', price: 7.99 } });

  const res = await searchApi.search({
    index: 'products',
    query: { query_string: '@title bag' },
    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_en'");

  await indexApi.insert({ index: "products", id: 1, doc: { title: "Crossbody Bag with Tassel", price: 19.85 } });
  await indexApi.insert({ index: "products", id: 2, doc: { title: "microfiber sheet set", price: 19.99 } });
  await indexApi.insert({ index: "products", id: 3, doc: { title: "Pet Hair Remover Glove", 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_en'")

        index_api.insert({"index": "products", "id": 1, "doc": {"title": "Crossbody Bag with Tassel", "price": 19.85}})
        index_api.insert({"index": "products", "id": 2, "doc": {"title": "microfiber sheet set", "price": 19.99}})
        index_api.insert({"index": "products", "id": 3, "doc": {"title": "Pet Hair Remover Glove", "price": 7.99}})

        res = search_api.search(
            {
                "index": "products",
                "query": {"query_string": "@title bag"},
                "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_en'")

        await index_api.insert({"index": "products", "id": 1, "doc": {"title": "Crossbody Bag with Tassel", "price": 19.85}})
        await index_api.insert({"index": "products", "id": 2, "doc": {"title": "microfiber sheet set", "price": 19.99}})
        await index_api.insert({"index": "products", "id": 3, "doc": {"title": "Pet Hair Remover Glove", "price": 7.99}})

        res = await search_api.search(
            {
                "index": "products",
                "query": {"query_string": "@title bag"},
                "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_en'").Execute()

	docs := []struct {
		id    int64
		title string
		price float64
	}{
		{1, "Crossbody Bag with Tassel", 19.85},
		{2, "microfiber sheet set", 19.99},
		{3, "Pet Hair Remover Glove", 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 bag"
	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_en'", true);

        var docs = new[]
        {
            new Dictionary<string, object> { ["title"] = "Crossbody Bag with Tassel", ["price"] = 19.85 },
            new Dictionary<string, object> { ["title"] = "microfiber sheet set", ["price"] = 19.99 },
            new Dictionary<string, object> { ["title"] = "Pet Hair Remover Glove", ["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 bag" },
            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_en'", true);

        indexApi.insert("{"index":"products","id":1,"doc":{"title":"Crossbody Bag with Tassel","price":19.85}}");
        indexApi.insert("{"index":"products","id":2,"doc":{"title":"microfiber sheet set","price":19.99}}");
        indexApi.insert("{"index":"products","id":3,"doc":{"title":"Pet Hair Remover Glove","price":7.99}}");

        String searchRequest = "{"
            + ""index":"products","
            + ""query":{"query_string":"@title bag"},"
            + ""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_en'", None);

    let docs = [
        (1, "Crossbody Bag with Tassel", 19.85),
        (2, "microfiber sheet set", 19.99),
        (3, "Pet Hair Remover Glove", 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 bag".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