Repolode
valeriansaliou

valeriansaliou/sonic

テキストをインデックス化して識別子を返す、軽量でスキーマレスな検索バックエンド。Elasticsearchの小規模な代替として利用できます。

代替できる製品:Elasticsearch

スター
21,367
フォーク
618
未解決の Issue
53
最終コミット
14 時間前

これは何?

SonicはRust製の検索バックエンドです。検索語をバケットごとにまとめたコレクションに保存し、ドキュメントではなくオブジェクト識別子を返します。そのため、アプリケーションはデータ全体を外部データベースに保持し、Sonicは一致するIDの検索だけに使えます。サーバーの稼働中に項目を追加・削除できるほか、タイプミスの補正、suggestコマンドによる単語の自動補完、多数の言語に対応したストップワードの除去をサポートします。

Sonicは、フル機能の検索エンジンにかかるリソースコストを抑えて検索機能を導入したいチーム向けに設計されています。プロジェクトによると、負荷時のRAM使用量は約30 MBで、クエリへの応答はマイクロ秒単位です。ベンチマークは単一マシンで測定されています。クライアントはシンプルなTCPプロトコルのSonic Channel経由で接続します。Node.js、Rust、PHP向けの公式ライブラリに加え、ほかの言語向けにも多数のコミュニティ製クライアントがあります。

SonicにはHTTP APIがなく、インデックス全体をメモリ上に置く設計でもありません。そのため、良好なクエリ性能を得るにはSSDベースのストレージが必要です。

主な機能

  • 01識別子だけを保存し、外部データベースのレコードを参照します。
  • 02完全一致する結果が不十分な場合、クエリのタイプミスを補正します。
  • 03suggestコマンドで単語をリアルタイムに自動補完します。
  • 04サーバーの稼働中に項目を追加・削除できます。
  • 05多くの言語でストップワードを除去し、一部の言語ではステミングも行います。
  • 06Sonic ChannelというシンプルなTCPプロトコルで通信し、複数の言語向けのクライアントライブラリを提供します。

ユースケース

  • メッセージデータを別のデータベースに保存するチャットやヘルプデスク製品に、全文検索を追加する。
  • エンドユーザー向けの検索インターフェースに、単語候補を表示する入力欄を構築する。
  • Elasticsearchの代わりに、小規模なサーバーで軽量な検索サービスを運用する。

クイックスタート

  1. 1

    CargoからSonicをインストールします

    cargo install sonic-server
  2. 2

    リポジトリからサンプルのconfig.cfgを取得し、環境に合わせて調整します

  3. 3

    設定ファイルを指定してSonicを実行します

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

使う前に知っておきたいこと

  • ビルドにはclang、libclang-dev、llvm-devなどのRocksDBのシステム依存関係が必要です。
  • Sonicが返すのは識別子のみのため、完全なレコードを読み込むには外部データベースが必要です。
  • HTTPエンドポイントはありません。Sonic Channelプロトコルまたはクライアントライブラリを介してやり取りする必要があります。

トピック

よくある質問

sonic とは?
テキストをインデックス化して識別子を返す、軽量でスキーマレスな検索バックエンド。Elasticsearchの小規模な代替として利用できます。 SonicはRust製の検索バックエンドです。検索語をバケットごとにまとめたコレクションに保存し、ドキュメントではなくオブジェクト識別子を返します。そのため、アプリケーションはデータ全体を外部データベースに保持し、Sonicは一致するIDの検索だけに使えます。サーバーの稼働中に項目を追加・削除できるほか、タイプミスの補正、suggestコマンドによる単語の自動補完、多数の言語に対応したストップワードの除去をサポートします。
sonic は無料で使えますか?ライセンスは?
sonic は MPL-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
sonic は今もメンテナンスされていますか?
活発にメンテナンス中。sonic の最終コミットは 2026年10月21日 です。
sonic は何に使えますか?
メッセージデータを別のデータベースに保存するチャットやヘルプデスク製品に、全文検索を追加する。 エンドユーザー向けの検索インターフェースに、単語候補を表示する入力欄を構築する。 Elasticsearchの代わりに、小規模なサーバーで軽量な検索サービスを運用する。
sonic のインストール方法は?
CargoからSonicをインストールします: cargo install sonic-server リポジトリからサンプルのconfig.cfgを取得し、環境に合わせて調整します 設定ファイルを指定してSonicを実行します: ./sonic -c /path/to/config.cfg
sonic はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/valeriansaliou/sonic

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト