Repolode
valeriansaliou

valeriansaliou/sonic

Backend de busca leve e sem schema que indexa texto e retorna identificadores, como alternativa enxuta ao Elasticsearch.

Alternativa open source a:Elasticsearch

Estrelas
21,367
Forks
618
Issues abertas
53
Último commit
há 14 horas

O que é?

Sonic é um backend de busca escrito em Rust. Ele armazena termos de busca em coleções agrupadas em buckets e retorna identificadores de objetos, não documentos; assim, as aplicações mantêm todos os dados em um banco externo e usam o Sonic apenas para encontrar IDs correspondentes. Ele permite inserir e remover itens enquanto o servidor está em execução, corrigir erros de digitação, completar palavras automaticamente por meio do comando suggest e remover stop words em uma ampla variedade de idiomas.

O Sonic foi projetado para equipes que precisam de busca sem o custo de recursos de um mecanismo completo. O projeto informa que usa cerca de 30 MB de RAM sob carga e responde a consultas na faixa dos microssegundos, com benchmarks realizados em uma única máquina. Os clientes se comunicam com ele pelo Sonic Channel, um protocolo TCP simples. Há bibliotecas oficiais para Node.js, Rust e PHP, além de muitos clientes da comunidade para outras linguagens.

O Sonic não tem API HTTP e não mantém seu índice na memória, então espera-se que use armazenamento baseado em SSD para ter um bom desempenho nas consultas.

Recursos principais

  • 01Armazena apenas identificadores, que apontam para registros em um banco de dados externo.
  • 02Corrige erros de digitação nas consultas quando as correspondências exatas não são suficientes.
  • 03Completa palavras automaticamente em tempo real por meio do comando suggest.
  • 04Permite adicionar e remover itens enquanto o servidor está em execução.
  • 05Remove stop words em vários idiomas e aplica stemming em alguns deles.
  • 06Usa um protocolo TCP simples chamado Sonic Channel, com bibliotecas cliente em várias linguagens.

Casos de uso

  • Adicionar busca de texto completo a um produto de chat ou helpdesk cujos dados de mensagens ficam em um banco de dados separado.
  • Criar caixas de sugestão de palavras em uma interface de busca voltada ao usuário final.
  • Executar um serviço de busca leve em um servidor pequeno, em vez de usar o Elasticsearch.

Início rápido

  1. 1

    Instale o Sonic pelo Cargo

    cargo install sonic-server
  2. 2

    Obtenha o arquivo de configuração de exemplo config.cfg do repositório e ajuste-o ao seu ambiente

  3. 3

    Execute o Sonic com seu arquivo de configuração

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

Antes de usar

  • A compilação requer dependências de sistema do RocksDB, como clang, libclang-dev e llvm-dev.
  • O Sonic retorna apenas identificadores, então você precisa de um banco de dados externo para carregar os registros completos.
  • Não há endpoint HTTP; é necessário interagir pelo protocolo Sonic Channel ou por uma biblioteca cliente.

Tópicos

Perguntas frequentes

O que é sonic?
Backend de busca leve e sem schema que indexa texto e retorna identificadores, como alternativa enxuta ao Elasticsearch. Sonic é um backend de busca escrito em Rust. Ele armazena termos de busca em coleções agrupadas em buckets e retorna identificadores de objetos, não documentos; assim, as aplicações mantêm todos os dados em um banco externo e usam o Sonic apenas para encontrar IDs correspondentes. Ele permite inserir e remover itens enquanto o servidor está em execução, corrigir erros de digitação, completar palavras automaticamente por meio do comando suggest e remover stop words em uma ampla variedade de idiomas.
sonic é gratuito? Qual é a licença?
sonic é open source sob a licença MPL-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
sonic ainda é mantido?
Manutenção ativa. O último commit de sonic foi em 21 de out. de 2026.
Para que posso usar sonic?
Adicionar busca de texto completo a um produto de chat ou helpdesk cujos dados de mensagens ficam em um banco de dados separado. Criar caixas de sugestão de palavras em uma interface de busca voltada ao usuário final. Executar um serviço de busca leve em um servidor pequeno, em vez de usar o Elasticsearch.
Como instalar sonic?
Instale o Sonic pelo Cargo: cargo install sonic-server Obtenha o arquivo de configuração de exemplo config.cfg do repositório e ajuste-o ao seu ambiente Execute o Sonic com seu arquivo de configuração: ./sonic -c /path/to/config.cfg
Onde consigo sonic?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/valeriansaliou/sonic

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados