2013年4月5日金曜日

Rails3.2.11でsolrを使おうと思ったけど、結果elasticsearch+mongoid+kuromoji

当初は、solrを使う予定で、solrをインストールして
日本人のjugyoさんが作ってくれてたsunspot_mongoidのgemを入れました。
ただ、これではreindexができないということで、
sunspot_mongoというsunspot_mongoidのラッパーを入れて、
これでreindexはできるようにしやした。

だがしかし、BSONが云々でmopedにgemを入れ替えてくれって書いてあって、
じゃgem 'moped'をいれて・・
結論からいいますと、あかんでした。

エラーを抑えきれませんでした。
いや、きっと優れたPGさんなら
片手で問題なく通るのかもしれませんが、
なんどやってもBSONなんちゃらのエラーがおさまらない。

ってことで前置きが長くなりましたが、
sphinx, solr, elasticsearchのうちのelasticsearchに挑むことにしました。
これが結構気持ちいい。
日本語も、kuromojiってpluginをいれることで問題なく?検索にかかります。

twitterでもつぶやきましたが、
solrがフシギバナだとすれば、elasticsearchはナッシーだn(ry

いやこれ結構正しいと思うんですよ、
ソーラービームでスピードよく、
グワーンと欲しいものをもってくるのはやっぱりフシギバナなんです。
けれども、ナッシーは変わった技マシンを覚えさせられたり、
HPいっぱいあるし成長しやs(ry


前置き長くなりましたが、以下導入方法

まずはelasticsearchをインストールします。brew が入ってればbrew install elasticsearchで十分です。
$ brew install https://gist.github.com/hotchpotch/5133549/raw/bdeea58fa72c33f74131f27ec78758556182d7ba/elasticsearch.rb
つぎにファイルのとこまで移動して、kuromojiをいれます。
$ cd /usr/local/opt/elasticsearch/
$ bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/1.2.0

これが終わったら、
次のコマンドで起動できる

elasticsearch -f -D es.config=/usr/local/opt/elasticsearch/config/elasticsearch.yml
ちゃんと起動できていれば、
$ curl -XPUT 'localhost:9200/kuromoji_checker/' -d '{}' {"ok":true,"acknowledged":true}Home-no-MacBook-Pro:1 Home$
ように返ってくる。
最後に、rakeコマンドでindexをはる。

$ rake environment tire:import CLASS='Model名' FORCE=true

深い検索アルゴリズム考えるの楽しそうだよー(∩´∀`)∩