BloGroonga

2012-01-16

モーショノロジー2012 #1参加のおしらせ

CROOZさん が主催する モーショノロジー2012 #1 という技術勉強会でgroonga関連のお話をすることになりました。

技術、デザイン、そのほか固執したテーマにとらわれない形式での勉強会、「モーショノロジー2012」を定期的に開催していく という「モーショノロジー2012」の第一回目のテーマが「検索」ということでgroonga開発チームにお声がけいただきました。ありがとうございます。この勉強会ではgroonga以外にもSolrや事例紹介など検索に関する様々な話題があります。検索(特に全文検索)に興味のある方はぜひ参加してみてください。

groonga関連では以下の3つの話題があります。

  1. groongaの索引を静的に構築する話
  2. rroongaで検索サービスを実装する話
  3. ぐるなびさんで利用している位置情報検索機能の話

索引の静的構築

先日開催された 全文検索エンジンgroongaを囲む夕べ 2 での 新年と収穫の祭り (PDF)でも触れましたが、静的な索引構築対応作業を進めています。

索引の構築方法には静的な構築方法と動的な構築方法があります。(参考: 検索エンジンはいかにして動くのか?:第7回 転置索引の構築検索エンジンはいかにして動くのか?:第10回 動的な索引構築 。)groongaでは鮮度のよい情報に価値があると考え、鮮度のよい情報をすぐに検索可能にすることを重視しています。そのため、これまでは高速で参照をブロックしない動的構築方法に特に力を入れてきました。

静的構築はすぐに検索可能にならないという欠点がありますが、索引の構築に必要なリソースなどでは動的構築よりも有利です。また、 mroongaSedue など静的に索引を構築するシステムでgroongaが利用される機会が増えてきました。そのため、動的構築方法だけではなく静的構築方法もサポートし、オンラインでデータベースを変更する場合は動的構築、バッチ処理でデータベースを変更する場合は静的構築と用途に応じて使い分けるようにします。

このような現在絶賛開発中の索引の静的構築方法について説明します。

rroongaで実装した検索サービス

Rubyからgroongaを全文検索ライブラリとして使うためのRuby用のライブラリが rroonga です。rroongaを使うと高速な全文検索機能をもった検索サービスをRubyで実装できます。

groongaを検索エンジンとして使った検索システムではいくつかの構成が考えられ、rroongaを使った構成もそのうちの1つです。

  • groongaサーバーを立ち上げてWebアプリケーションはgroongaサーバーとHTTPで通信する構成
  • MySQLと mroonga を組み合わせてWebアプリケーションはMySQLとSQLで通信する構成
  • rroongaを利用し、Webアプリケーションプロセス自体に検索機能をもたせる構成
  • など

このうち、rroongaを利用する構成のメリット・デメリット、負荷分散するための方法、実例などを説明します。

位置情報検索機能

ぐるなびさんでの位置情報検索機能の話は 全文検索エンジンgroongaを囲む夕べ 2 のときと同じ内容です。groongaを囲む夕べでは一番質問の多かった話だったので、groongaを囲む夕べでは都合がつかなかったために聞き逃したという方はぜひ参加してみてください。

まとめ

モーショノロジー2012 #1 でのgroonga関連の話題の内容を紹介しました。興味のある方はぜひ参加してください。