Rails+MySQLで全文検索

MySQLのFULLTEXTインデックスという機能で全文検索を実現出来るが、FULLTEXTインデックスは半角スペースを区切りにしてインデックス化するため日本語に対応できない。そのため別途に全文検索エンジンを実装する必要がある。
有名な全文検索エンジンとして以下のものがある。

全文検索エンジンを実装するには、

  • アプリケーション側で実装する
  • DB側で実装する

の方法がある。
JavaであればLuceneを使ってアプリケーション側で本格的な全文検索を実装することもあるようだが、Railsでごちゃごちゃしたコードは書きたくないので他の方法を探す。
MySQLSennaを組み込んだTritonn(http://qwik.jp/tritonn/download.html)というプロジェクトがあったのでこれをインストールする。
Tritonnのインストール方法には、

  • RPMパッケージでインストールする
  • バイナリtar.gz形式からインストールする
  • ソースからインストールする

の3種類の方法がある。

RPMパッケージからインストールする

http://sourceforge.jp/projects/tritonn/releases/ の「Linux x86 generic RPM」にある以下のRPMパッケージをダウンロードする。MySQL-develは要らないと思うけど一応。

インストールする。


# rpm -ivh mecab-0.9.7-tritonn.1.0.12.i386.rpm
# rpm -ivh mecab-ipadic-2.7.0.20070801-tritonn.1.0.12.i386.rpm
# rpm -ivh senna-1.1.4-tritonn.1.0.12.i386.rpm
# rpm -ivh MySQL-shared-5.0.67-tritonn.1.0.12.i386.rpm
# rpm -ivh MySQL-client-5.0.67-tritonn.1.0.12.i386.rpm
> エラー: 依存性の欠如: perl(DBI)はMySQL-client-5.0.67-tritonn.1.0.12.i386 に必要とされています
# yum install perl-DBI
# rpm -ivh MySQL-client-5.0.67-tritonn.1.0.12.i386.rpm
# rpm -ivh MySQL-server-5.0.67-tritonn.1.0.12.i386.rpm
# rpm -ivh MySQL-devel-5.0.67-tritonn.1.0.12.i386.rpm

サーバの起動


# service mysql start

サーバの停止


# service mysql stop

RPMパッケージからインストールすると、rcスクリプトやmysqサーバを起動するOSユーザを自動で作ってくれるためインストール作業は楽だが、環境設定における柔軟性が無いという欠点がある。
また、異なるバージョンのTritonnを混在させることが出来なくなる。同じマシン上で複数のアプリケーションを動かして異なるMySQLサーバを使いたい場合などはバイナリtar.gz形式かソースからインストールする必要がある。