MySQLで全文検索(mroonga)をインストールしてみた。(CentOS6.5)
2014年3月26日
mroongaのインストール
yumで入るみたいなので、そっち使う。
yum install centos-release-SCL rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm yum makecache yum install -y mysql mysql55-mysql-server service mysql55-mysqld start yum install -y mysql55-mroonga
MySQL5.5って少し古い気がするけど、一旦これで。
インストールできたと思いきや、、
INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so';
これ叩かないと駄目だった。。
SHOW ENGINES;
Engineに、mroongaが追加されました。
yum install -y groonga-tokenizer-mecab
yum install -y install groonga-normalizer-mysql
これでようやくmroongaを使う準備ができました。
mroongaを使ってみる
-- DB作成 CREATE DATABASE hoge CHARACTER SET utf8; -- hogeに切り替え use hoge; -- テーブルの作成 CREATE TABLE user ( `id` INT PRIMARY KEY AUTO_INCREMENT, `profile` VARCHAR(255), FULLTEXT INDEX (`profile`) ) ENGINE = mroonga COMMENT = 'engine "innodb"' DEFAULT CHARSET utf8;
てきとうなDBを作成して、userテーブルを追加してみました。
InnoDBを使いたかったので、ラッパーモードで。
PRIMARY KEYは必須です。
-- 追加 INSERT INTO user SET profile = '本日は晴天なり'; INSERT INTO user SET profile = '本日は雨天なり'; INSERT INTO user SET profile = 'これはテストなり'; INSERT INTO user SET profile = 'これはなりなり'; INSERT INTO user SET profile = 'これはなりなりなり'; INSERT INTO user SET profile = 'これはななななりなり'; -- 「は」を含むuserを取得 SELECT * FROM user WHERE MATCH(profile) AGAINST("は"); -- 「なり」を多く含む順に取得 SELECT *, MATCH (content) AGAINST ("なり") AS score FROM user WHERE MATCH (content) AGAINST ("なり") ORDER BY score DESC;
今後、全文検索が必要な場合は、最初からmroongaを前提で設計した方がいいかもしれないなー。