Rails+MySQLで全文検索
MySQLのFULLTEXTインデックスという機能で全文検索を実現出来るが、FULLTEXTインデックスは半角スペースを区切りにしてインデックス化するため日本語に対応できない。そのため別途に全文検索エンジンを実装する必要がある。
有名な全文検索エンジンとして以下のものがある。
全文検索エンジンを実装するには、
- アプリケーション側で実装する
- DB側で実装する
の方法がある。
JavaであればLuceneを使ってアプリケーション側で本格的な全文検索を実装することもあるようだが、Railsでごちゃごちゃしたコードは書きたくないので他の方法を探す。
MySQLにSennaを組み込んだ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は要らないと思うけど一応。
- MySQL-client-5.0.67-tritonn.1.0.12.i386.rpm
- MySQL-devel-5.0.67-tritonn.1.0.12.i386.rpm
- MySQL-server-5.0.67-tritonn.1.0.12.i386.rpm
- MySQL-shared-5.0.67-tritonn.1.0.12.i386.rpm
- mecab-0.97-tritonn.1.0.12.i386.rpm
- mecab-ipadic-2.7.0.20070801-tritonn.1.0.12.i386.rpm
- senna-1.1.4-tritonn.1.0.12.i386.rpm
インストールする。
# 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形式かソースからインストールする必要がある。