« Capistrano のタスクをフックする | メイン | MeCabのRubyバインディング »

Sennaとrubyで全文検索(インストール編)

[ruby] [senna] [mecab] [全文検索]

Sennaをインストールしてみた。

インストールの流れ

  1. MeCab 0.81以降のインストール
  2. Sennaのインストール
  3. ruby バインディングのインストール
MeCabのインストール
http://mecab.sourceforge.net/#download

ここから、mecab本体のソースコードと、辞書をダウンロード。

デフォルトでEUCが使われるので、configureの際に以下のようにオプションを設定する。


./configure --with-charset=utf8

辞書のインストールの際も同様。

Sennaのインストール

必要ないようだが、mecabを使うように明示しておく。


wget http://dev.razil.jp/archive/senna/senna-latest-svn.tar.gz
tar xvfz senna-latest-svn.tar.gz
cd senna
./configure --with-mecab
make
sudo make install

さらにEUC以外の文字コードを使う時は、/var/senna/senna.conf に以下のように記述。
ここではUTF-8。


DEFAULT_ENCODING utf8

ruby バインディングのインストール

cd bindings/ruby/
ruby extconf.rb
make
sudo make install

で、テストしてみる。


./test/all_test.rbx

TypeError: wrong argument type Fixnum (expected Data)
    /usr/local/lib/ruby/site_ruby/1.8/senna.rb:278:in `sen_sym_create'
    /usr/local/lib/ruby/site_ruby/1.8/senna.rb:278:in `create'
    ./advanced-api-test/test_index_advanced.rb:15:in `test_create_with_keys'

???(;´Д`)
訳がわからないのでMLで質問してみると、

SWIGをインストールされていますでしょうか?

もしされているのであれば、
パッケージを再度開封しなおした上で、
bindings/ruby/extconf.rbの
system "swig -ruby senna_api.i"
の行を削除してみてください。

との回答を頂き、試してみたところ無事実行できました。

いまいちswigの事を理解していないので、原因がわかりません・・・
スクリプト言語からC/C++のコードを利用するためのインタフェースとなるコードを生成する開発ツール

まあ今回はスルーで。
テストに多少Failureがありましたがこれもとりあえず今はスルーの方向で(´▽、`)

mysql にパッチをあてれば、Sennaで全文検索できるようになるみたい。
時間ができたらそれも試してみよう。

参考URL

トラックバック

このエントリーのトラックバックURL:
http://i-am.web777.net/mt/mt-tb.cgi/24

コメント (1)

グニャラくん:

DEFAULT_ENCODINGがeucでないと、テストスイートが正常に動作しないのです…

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)