[#47605] Rubyでも「private」イコール「非公開」? — Makoto Kuwata <kwa@...>

桑田といいます。

12 messages 2010/11/04
[#47606] Re: Rubyでも「private」イコール「非公開」? — Yusuke ENDOH <mame@...> 2010/11/04

private constant 提案者の遠藤です。

[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/

In This Thread

Prev Next