From: Kouhei Sutou Date: 2010-11-30T17:52:52+09:00 Subject: [ruby-list:47662] [ANN] ActiveGroonga 1.0.1 須藤です。 昨日はいい肉の日でしたね。 昨日、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を利用してみてはいかがでしょ うか。 -- 須藤 功平 株式会社クリアコード (03-6231-7270) プログラミングが好きなソフトウェア開発者を募集中: http://www.clear-code.com/recruitment/