Webサイトやアプリ向けに、全文・セマンティック・ハイブリッド検索を提供する、高速でタイポに強い検索エンジンです。
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
CargoからSonicをインストールします
cargo install sonic-server - 2
リポジトリからサンプルのconfig.cfgを取得し、環境に合わせて調整します
- 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 の数値は毎日更新されます。
関連プロジェクト
リアルタイムインデックス作成とSQLに対応し、全文検索・ベクトル検索・ハイブリッド検索を提供するオープンソースの検索データベース。Elasticsearchの代替として利用できます。
Redisに全文検索、セカンダリインデックス、ベクトル類似検索、集計クエリを追加するRedisモジュール。
閲覧したWebページや保存したファイルをインデックス化し、Web、ターミナル、MCP経由のAIアシスタントから検索できる、プライベートなセルフホスト型検索エンジン。
Apache Luceneに着想を得たRust製の全文検索エンジンライブラリ。アプリケーションに独自の検索機能を組み込めます。
Typesenseは、タイプミス許容、ファセット検索、地理検索、ベクトル検索に対応し、AlgoliaやElasticsearchよりシンプルな選択肢を目指すオープンソースのインメモリ検索エンジンです。