全文検索エンジンmroonga導入の試行錯誤

全文検索エンジンmroonga導入の試行錯誤

yumのremiレポジトリを使って構築してある環境にmroongaを導入しました

mroongaはMySQLで全文検索機能する為のエンジンで、MySQLのプラグインとして動作します
マニュアルを見てると簡単に入りそうなのですが、既に動いてる環境に入れたのでとても苦労しました

失敗した部分を全部書いてるので非常に長いですが、ご容赦ください

まず現在の環境から

PHP

remi-testを使ってPHP5.4を入れています

MySQL

mroongaのインストール

mysqlは動いている状態でインストールします

ログを見る感じぶつかってないし大丈夫そうなので続行しちゃいますよ

入りませんでした ○| ̄|_

MySQL5.5.21なら入るのかな??ダメ元でupdateかけてみます
この時にgroonaのリポジトリが有効になってるとおかしくなりそうなので無効に

入ったので念のため再起動をして再チャレンジ
そして再度失敗 ○| ̄|_

/etc/my.cnfをどかせばいいのかなと思ったけど、ダメでした

諦めてmysqlをremove (;´Д`)

そしたら当然だけど入りました

php-mysql も削除されちゃっているので忘れずに入れときます

mroongaを起動する

これじゃダメなようです

起動コマンドはこっちだけど、こっちも起動しない。。。

logにはこんな文字が

my.cnfに書いたmroonga_default_parser=TokenMecabがわからんと怒られちゃったのでとりあえずコメントアウトしてすすみます

起動出来たので、プラグインをインストールします。
mysqlを起動したままの場合はここは勝手にやってくれそうですね

オプションに関しては後ほど再研究の必要がありそう

インストール出来たかの確認

3. ユーザガイド — mroonga v2.00 documentation

Mecabを使う場合

groonga-tokenizer-mecabのインストールが必要なようです
ドキュメントに書いてないのでこれはわからん、、@katouさんありがとうございます

これでmroonga_default_parser=TokenMecabを有効にしても起動が出来ました

全文検索出来るようにしてみる

さてようやくここからが本番
すでにあるテーブルにいきなりやってみます (/∇\*)

mroongaにはストレージモードとラッパーモードがあるようです
ストレージモードはトランザクションがサポートされないようなので今回はラッパーモードで逝ってみます

ALTER TABLE

してみたけど、エラーが出た。。外部キーはダメそうなので削除削除(あとでプログラムを直すのを忘れずに…)

出来ました (*´∀`*)

ADD FULLTEXT INDEX

FULLTEXT INDEXを張って全文検索出来るようにします
商品名と、商品内容での複合インデックスも必要なのでそちらも張ります

複合インデックスも出来ました!

インデックスは張れたのでまずはコマンドラインで試してみます

likeだとどんなもんかチェック

mroongaはやい!!これは捗る!!
つーかlikeなんでこんな遅くなったんだろう。。

あとはこれをプログラム側に反映すればOKですね

テストサイトはこちらw

ここにあるかも?Cocokamo

ちょくちょく触ってるので落ちてることがありますがあまり気にしないで下さいませませ (・ε・)

追記

複合indexを使う場合のselectの書き方

参考サイト

CentOS に PHP+mroonga(MySQL全文検索) のインストール
mroonga — mroonga v2.00 documentation

One Reply to “全文検索エンジンmroonga導入の試行錯誤”

  1. ピンバック: mroongaラッパーモードのベンチマーク « YasuOza's Diary

コメントを残す