Groonga関連プロジェクト
Groonga関連プロジェクトは以下のような5つのカテゴリに分けられます。
個々の関連プロジェクトの詳細については後述のセクションを参照してください。
データベース
Groongaを他のデータベース製品と組合せて使うこともできます。拡張したSQLクエリを使うことができます。
Groonga + MySQL
MroongaはGroongaを用いたMySQLのストレージエンジンです。Mroongaを用いることにより、MySQLでも高速で高精度な全文検索機能を利用できます。
Groonga + PostgreSQL
PGroongaはインデックスにGroongaを用いたPostgreSQLの拡張機能です。全言語対応で高速な全文検索機能を利用できます。
言語バインディング
Groonga向けにいくつか言語バインディングがあります。HTTP/APIアクセスを提供するNode.js、Ruby、Perlのバインディングを使えます。
Groonga + Node.js
NroongaはNode.js用のGroongaバインディングです。NroongaはGroongaをライブラリとして使うので、全文検索はNode.jsプロセスが行います。
Groonga + Ruby
RroongaはGroongaのRubyバインディングです。 RroongaはGroongaの全文検索システムを提供しているラングバプロジェクトの一部です。
Groonga + Ruby
GrnMiniはRroongaを簡単に使えるようにしたラッパーです。
Groonga + Perl
p5-GroongaはGroongaのPerlバインディングです。PerlからGroongaをライブラリとして利用することができます。
Groonga + Perl
PloongaはGroongaのPerlバインディングです。PerlからGroongaをライブラリとして利用することができます。
Groonga + PHP
ProongaはGroongaのPHPバインディングです。PHPからGroongaをライブラリとして利用することができます。
Groonga + Haskell
HaroongaはGroongaのHaskellバインディングです。Haroongaはヘッダファイル(groonga.h)から生成したRawバインディングと呼ばれるAPIに加え、CommandAPIとしてGroongaコマンドのレイヤーのAPIを提供しています。そのためHaskellからGroongaコマンドのレイヤーのAPIだけでなく、Groongaの多くの機能をライブラリとして使えるようになっています。
Groonga + GObject
Groonga-GObjectはGObject Introspectionを利用したGroongaのラッパーです。いくつかのプログラミング言語からGroongaをライブラリとして利用することができます。
クライアントライブラリ
いくつかのプログラミング言語からGroongaサーバーに接続するためのAPIを提供するクライアントライブラリがあります。
図のgqtpは'groonga query transfer protocol'というGroonga専用プロトコルを意味します。
Groonga + Perl
AnyEvent-Groongaは非同期でGroongaサーバへアクセスすることで並列処理を行い、より高いパフォーマンスを引き出すPerl用のGroongaクライアントライブラリです。
紹介記事: 非同期で全文検索エンジンgroongaを叩く AnyEvent::Groonga 書いたよ - ダウンロードたけし(寅年)の日記
Groonga + Node.js
node-groongaはNode.jsから簡単にGroongaサーバーを利用するためのクライアントライブラリです。node-groongaはGroongaをサーバーとして使うので、全文検索はNode.jsプロセスではなくGroongaサーバープロセスが行います。
紹介記事: node-groonga - Node.jsでgroongaにアクセスする - WebService::Blog->new( user => ’hide_o_55’ )
Groonga + Ruby
Groonga-clientはRubyからGroongaサーバーと接続するためのクライアントライブラリです。GQTPとHTTPに対応しています。
Groonga + Ruby
GQTP gemはGQTPのRuby実装です。GQTPクライアント、GQTPサーバーおよびGQTPプロキシを実装するための非同期APIを提供します。より高い同時実行性能を引き出すことができます。
Groonga + Python
pyroongaはPythonからGroongaサーバーと接続するためのクライアントライブラリです。GQTPに対応しています。
Groonga + Python
poyongaはPythonからGroongaサーバーと接続するためのクライアントライブラリです。GQTPとHTTPに対応しています。
Groonga + PHP
groonga-http-phpはPHPからGroongaサーバーと接続するためのクライアントライブラリです。HTTPに対応しています。
Groonga + PHP
php-phroongaはPHPからGroongaサーバーと接続するためのクライアントライブラリです。HTTPに対応しています。
Groonga + Erlang
eroongaはErlangで実装されたgqtpクライアントです。gqtpを使っているGroongaサーバーに接続することができます。
Groonga + Go
goroo(ごろう)はGoからGroongaサーバーと接続するためのクライアントライブラリです。HTTPとGQTPに対応しています。
Groonga + Scala
groonga4sはScalaからGroongaサーバーと接続するためのクライアントライブラリです。HTTPに対応しています。
Groonga + Rust
ruroonga_clientはRustで実装されたGroongaサーバーと接続するためのクライアントライブラリです。HTTPに対応しています。
サーバーユーティリティ
Groongaをサーバー用途で使う場合に便利なAPIやHTTP機能 (リバースプロキシ) を提供するライブラリがあります。
App-Groonga-Wrapper
App::Groonga::WrapperはローカルのHTTPインターフェイスで動くGroongaサーバのリバースプロキシです。認証や機能の制限、接続元の制限などセキュリティ機構をGroongaサーバに追加します。Perlで書かれています。
紹介記事: Hachioji.pm #6に行ってきた - WebService::Blog->new( user => ’hide_o_55’
Sewell
SewellはRubyでGroongaのクエリーを生成するためのツールです。サーバー用途でもRroongaでも使えます。
コマンドラインユーティリティ
コマンドラインインタフェース (CLI) の使い勝手を向上するためのユーティリティがあります。
grnwrap
grnwrapはGroongaのコマンドラインインターフェイスを改良するユーティリティです。
紹介記事: Groongaの対話モードをラップするgrnwrap - from __future__ import nowhere @ はてな
grnline.fs
grnline.fsはGroongaのコマンドの文字コードの問題を吸収するユーティリティです。.NETで作成されていて、cp932環境などのUTF-8環境でないWindowsでLinuxやMac環境などで作成したGroongaのデータベースの読み込み・書き込みをサポートします。
Grnlip
GrnlipはReadlineを使ったCLIを提供します。Windows環境でUTF-8のDBを扱うこともできます。Rubyで書かれており、RubyGems.orgで公開されています。
紹介記事: GroongaのUTF-8なDBに対してShift_JIS(cmd.exe)で全文検索する3つの方法 - Qiita
Zshの補完関数
zsh_completionsはhhatoさんの書かれたZshの補完関数集ですが、その中にGroongaとgroonga-suggest-httpd、groonga-suggest-learnerの補完関数も含まれています。