全文検索エンジンgroongaを使ってみる(1) - インストール

休暇中に何らかの全文検索エンジンを入れて触ってみようと決めていたのでGroongaを入れてみた。

特徴

Groongaの特徴は以下の様なところがある。

  • 操作は複数のプロトコルが利用可能
    • 独自プロトコル or HTTP or memcached binaryプロトコル
    • HTTPの場合, GETリクエストで各種クエリを投げる形。結果はJSONで得られる。
  • データ更新が高速
    • 前身のSennaMySQLMyISAMに依存していたので更新時にテーブル全体にロックがかかってボトルネックになっていたのを独自ストレージを実装したので問題が解消
  • 集計系のクエリ処理が高速
    • ドリルダウン(検索結果をグループ分けする様な処理)を高速に行うことができる
  • 管理ツール利用可能
    • phpMyAdminの様なツールが標準で付いている (HTTPを利用する設定でGroongaサーバを起動させた場合)
  • サジェスト機能
    • 渡された検索クエリを元におすすめのクエリーをユーザに提案できる
      • Groongaサーバが検索クエリー入力時を含めログに回収し、それを元に提案する
  • 検索スコアの調整
    • Groongaが検索結果として返却したスコアに対して検索スコアを調整することができる。(独自のパラメータを重みとして検索結果に反映させられる)

といった具合。
簡単に触ってみたところ、検索スコアの調整が非常にしやすい印象を持ったし、HTTPで制御できるのが非常に便利といった実感を持った。

インストール

インストールは、このページを参照するとそれぞれの環境にあわせたインストール方法が紹介されているので参照しながら導入する。
Macの場合、Macports or Homebrew が選択できるので、ここではHomebrewを使ってみる。
brewコマンドですぐにインストールが可能。

% brew install groonga
Warning: It appears you have Macports or Fink installed
Software installed with other package managers causes known problems for
Homebrew. If formula fail to build uninstall Macports/Fink and reinstall any
affected formula.
==> Downloading http://packages.groonga.org/source/groonga/groonga-1.2.4.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/groonga/1.2.4 --with-zlib
==> make install
/usr/local/Cellar/groonga/1.2.4: 590 files, 12M, built in 7.1 minutes

インストール完了後、groongaコマンドでインストールを確認できる。

% groonga --version
groonga 1.2.4 [darwin9.8.0,i386,utf8,match-escalation-threshold=0,nfkc,mecab,zlib,kqueue]

configure options: < '--prefix=/usr/local/Cellar/groonga/1.2.4' '--with-zlib' 'CC=/usr/bin/cc' 'CFLAGS=-O3 -march=nocona -mfpmath=sse -w -pipe' 'CXX=/usr/bin/c++' 'CXXFLAGS=-O3 -march=nocona -mfpmath=sse -w -pipe'>


これでインストール完了。
もう少しいろいろ触ったのだけど、激しくお腹が痛いので今日はここまで。