[ruby-list:47662] [ANN] ActiveGroonga 1.0.1
From:
Kouhei Sutou <kou@...>
Date:
2010-11-30 08:52:52 UTC
List:
ruby-list #47662
須藤です。
昨日はいい肉の日でしたね。
昨日、ActiveGroonga 1.0.1をリリースしました!
http://groonga.rubyforge.org/#about-active-groonga
ActiveGroongaはRails 3のモデル用のライブラリです。
ActiveRecordやActiveResourceやDataMapperと同じような機能を提
供します。
違うのは、ActiveGroongaはバックエンドにgroongaを使うことです。
groongaは、高速・高精度・高柔軟性という特徴をもつ全文検索エン
ジンです。groongaは全文検索エンジンですが、列ベース(RDBは行
ベース)のデータベース機能も持っており、RDBと同じようにデー
タストアとして利用できます。
参考: groongaの特徴: http://groonga.org/docs/characteristic.html
Railsのデータストアとしてgroongaを利用することにより、高速な
全文検索機能を提供することができます。groongaは日本で開発さ
れているため、トークナイズの方法をわかち書き・N-gramから選べ
る、N-gramでも英数字や記号の扱いをカスタマイズできるなど日本
語での全文検索機能のサポートが手厚くなっています。そのため、
テキスト情報を多く扱うようなWebサイトで有用です。
例えば、Rubyのリファレンスマニュアルを検索する「るりまサーチ」
もgroongaを利用して全文検索機能を提供しています。
http://rurema.clear-code.com/
ActiveGroongaはRails 3のモデルライブラリが提供する以下の機能
をサポートしています。
* ジェネレーション
* マイグレーション
* バリデーション
* リレーション
インストールもRails 3のモデルライブラリの追加方法と同様です。
% rails new blog
以下をGemfileに追加:
gem 'activegroonga'
以下をconfig/application.rbに追加:
require 'active_groonga/railtie'
インストール:
% bundle install
これで、使う準備が整いました。
モデルを作る場合はscaffoldが使えます。
以下のようにして記事モデルを作れます。
% script/rails generate scaffold article title:short_text content:text
マイグレーションファイルが生成されるので、それを使ってスキー
マを更新します。
% rake groonga:migrate
サーバを起動してアクセスすると記事を操作できます。
% script/rails server
URL: http://localhost:3000/articles/
例えばこんなスクリプトでテストデータを挿入できます。
index_articles.rb:
require 'rss'
require 'open-uri'
rss = RSS::Parser.parse(open("http://www.ruby-lang.org/ja/feeds/news.rss"))
rss.items.each do |item|
Article.create!(:title => item.title, :content => item.description)
end
実行:
% script/rails runner index_articles.rb
全文検索をするには索引を作成します。
% script/rails generate model terms key:short_text:patricia_trie:normalize:tokenizer:bigram articles.title:index articles.content:index --no-timestamps
% rake groonga:migrate
これで、記事のタイトルと内容で全文検索できるようになります。
% script/rails console
> articles = Article.select {|record| record.content =~ "脆弱性"}; nil
=> nil
> articles.each {|article| p article.title}
"Ruby 1.8.7-p302 リリース"
"Ruby 1.9.1-p430 リリース"
"WEBrickのXSS脆弱性 (CVE-2010-0541)"
"Ruby 1.9.1-p429リリース"
=> nil
と、このようにgroongaをRailsとシームレスに使うことができるよ
うになります。Webサイトに高速・高精度・高柔軟性な全文検索機
能をつけたい場合はActiveGroongaを利用してみてはいかがでしょ
うか。
--
須藤 功平 <kou@clear-code.com>
株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)
プログラミングが好きなソフトウェア開発者を募集中:
http://www.clear-code.com/recruitment/