Repolode
valeriansaliou

valeriansaliou/sonic

Лёгкий поисковый бэкенд без схемы: индексирует текст и возвращает идентификаторы, предлагая компактную альтернативу Elasticsearch.

Open source альтернатива:Elasticsearch

Звёзды
21,367
Форки
618
Открытые issues
53
Последний коммит
16 часов назад

Что это?

Sonic — поисковый бэкенд, написанный на Rust. Он хранит поисковые термины в коллекциях, сгруппированных по бакетам, и возвращает идентификаторы объектов, а не документы. Поэтому приложения держат полные данные во внешней базе, а Sonic используют только для поиска подходящих ID. Сервер поддерживает добавление и удаление записей без остановки, исправление опечаток, автодополнение слов через команду suggest и удаление стоп-слов для множества языков.

Sonic рассчитан на команды, которым нужен поиск без затрат ресурсов, характерных для полнофункционального движка. По данным проекта, под нагрузкой он использует около 30 МБ RAM и отвечает на запросы за микросекунды; бенчмарки проводились на одной машине. Клиенты подключаются к нему по Sonic Channel — простому TCP-протоколу. Официальные библиотеки есть для Node.js, Rust и PHP, а для других языков доступны многочисленные клиентские библиотеки от сообщества.

У Sonic нет HTTP API, а индекс не помещается целиком в оперативную память, поэтому для высокой скорости запросов ему нужно хранилище на SSD.

Ключевые возможности

  • 01Хранит только идентификаторы, которые ссылаются на записи во внешней базе данных.
  • 02Исправляет опечатки в запросах, если точных совпадений недостаточно.
  • 03Дополняет слова в реальном времени с помощью команды suggest.
  • 04Позволяет добавлять и удалять записи, пока сервер работает.
  • 05Удаляет стоп-слова для многих языков и выполняет стемминг для некоторых из них.
  • 06Работает по простому TCP-протоколу Sonic Channel; клиентские библиотеки доступны для нескольких языков.

Сценарии использования

  • Добавление полнотекстового поиска в чат или службу поддержки, где данные сообщений хранятся в отдельной базе.
  • Создание подсказок слов в поисковом интерфейсе для конечных пользователей.
  • Запуск лёгкого поискового сервиса на небольшом сервере вместо Elasticsearch.

Быстрый старт

  1. 1

    Установите Sonic с помощью Cargo

    cargo install sonic-server
  2. 2

    Возьмите пример конфигурации config.cfg из репозитория и настройте его для своей среды

  3. 3

    Запустите Sonic с файлом конфигурации

    ./sonic -c /path/to/config.cfg

Что важно знать

  • Для сборки нужны системные зависимости RocksDB, например clang, libclang-dev и llvm-dev.
  • Sonic возвращает только идентификаторы, поэтому для загрузки полных записей нужна внешняя база данных.
  • HTTP-эндпоинта нет; взаимодействовать с Sonic нужно через протокол Sonic Channel или клиентскую библиотеку.

Темы

Частые вопросы

Что такое sonic?
Лёгкий поисковый бэкенд без схемы: индексирует текст и возвращает идентификаторы, предлагая компактную альтернативу Elasticsearch. Sonic — поисковый бэкенд, написанный на Rust. Он хранит поисковые термины в коллекциях, сгруппированных по бакетам, и возвращает идентификаторы объектов, а не документы. Поэтому приложения держат полные данные во внешней базе, а Sonic используют только для поиска подходящих ID. Сервер поддерживает добавление и удаление записей без остановки, исправление опечаток, автодополнение слов через команду suggest и удаление стоп-слов для множества языков.
sonic можно использовать бесплатно? Какая у него лицензия?
sonic распространяется с открытым исходным кодом под лицензией MPL-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
sonic всё ещё поддерживается?
Активно поддерживается. Последний коммит в sonic — 21 окт. 2026 г..
Для чего можно использовать sonic?
Добавление полнотекстового поиска в чат или службу поддержки, где данные сообщений хранятся в отдельной базе. Создание подсказок слов в поисковом интерфейсе для конечных пользователей. Запуск лёгкого поискового сервиса на небольшом сервере вместо Elasticsearch.
Как установить sonic?
Установите Sonic с помощью Cargo: cargo install sonic-server Возьмите пример конфигурации config.cfg из репозитория и настройте его для своей среды Запустите Sonic с файлом конфигурации: ./sonic -c /path/to/config.cfg
Где скачать sonic?
Исходный код и инструкции по установке — на GitHub: https://github.com/valeriansaliou/sonic

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Приватная поисковая система на собственном сервере: индексирует посещённые веб-страницы и сохранённые файлы, а искать можно через веб-интерфейс, терминал или AI-ассистентов по MCP.

6,1 тыс.276GoAGPL-3.0Обновлён 19 часов назад

Typesense — поисковый движок с открытым исходным кодом, работающий в памяти: он поддерживает поиск с учётом опечаток, фасетный, географический и векторный поиск и предлагает более простой вариант, чем Algolia и Elasticsearch.

27 тыс.1 тыс.C++GPL-3.0Обновлён позавчера