Ruby on Railsで全文検索
きっとJavaでApache Luceneを使って、全文検索システムとか作ってって、それからRailsマンセーとか言って乗り換えてみたものの、Hyper Estraierがイイとか聞いて、インストールしてみたものの、なんだかよくわからん。やっぱLuceneが最高だよね。Lucene使うとなるとTomcatとかテキトーにインストして、Railsとの通信はXMLRPCとか使ってやるか〜うわ!メンドクセー!なんてことを考えている全国のみなさん(多分すげーマイノリティ)朗報ですよ。
Ferret
http://ferret.davebalmain.com/trac
Apache LuceneのRubyポーティング版
インデックス作成
index = Index::Index.new() index = Index::Index.new(:path => '/path/to/index') index = Index::Index.new(:path => '/path/to/index', :analyzer => WhiteSpaceAnalyzer.new) include Ferret::Document doc = Document.new doc << Field.new("id", row.id, Field::Store::NO, Field::Index::UNTOKENIZED) doc << Field.new("title", row.title, Field::Store::YES, Field::Index::UNTOKENIZED) doc << Field.new("data", row.data, Field::Store::YES, Field::Index::TOKENIZED) doc << Field.new("image", row.image, Field::Store::YES, Field::Index::NO) index << doc
検索
index.search_each('content:"quick brown fox"') do |doc, score| puts "Document #{doc} found with a score of #{score}" end
みたいな。
ドキュメントを読む限り、インクリメンタルインデキシングができたりと
なかなかLuceneを使ったことがある人にはわかりやすいかと
あとは、CJKAnalyzerかJapaneseAnalyzerが使えるのかどうかそのへんですかねえ
ちと調べて報告するかも
#めんどくさいからこのままacts_as_searchableを使うか・・・・^^;