読者です 読者をやめる 読者になる 読者になる

まめ畑

ゆるゆると書いていきます

Mysqlftppcを入れてみた

MySQL mysqlftppc 全文検索

日本語全文検索エンジンというと、sennaTritonnなどが有名ですが、今回はMysqlftppcを使ってみました。
Mysqlftppcは「MySQL full-text parser plugin collection」の略称で、プラグインとして以下のものが提供されています。

  • bigram plugin
  • mecab plugin
  • space plugin
  • suffix plugin
  • snowball plugin

公式サイト: SourceForge.net: mysqlftppc

今回はこの中から、Mecab Pluginを使用しました。

#Mecabインストール
cd /usr/local/src
wget http://sourceforge.net/projects/mecab/files/mecab/0.98/mecab-0.98.tar.gz/download
tar xzvf mecab-0.98.tar.gz
cd mecab-0.98
./configure && make -j2 && make install

#辞書インストール
wget http://iij.dl.sourceforge.jp/naist-jdic/40117/mecab-naist-jdic-0.6.0-20090616pre3.tar.gz
tar xzvf mecab-naist-jdic-0.6.0-20090616pre3.tar.gz
cd mecab-naist-jdic-0.6.0-20090616pre3
./configure --with-charset=utf8
make -j2 && make install

#Mecab設定
vim /usr/local/etc/mecabrc
----------
dicdir = /usr/local/lib/mecab/dic/naist-jdic
----------

#ICUインストール(Unicodeの正規化)
wget http://download.icu-project.org/files/icu4c/4.4.1/icu4c-4_4_1-src.tgz
tar xzvf icu4c-4_4_1-src.tgz
cd icu/source
./configure
make -j2 && make install

#MySQLインストール
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql
cd /usr/local/src
wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.50.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xzvf mysql-5.1.50.tar.gz
cd mysql-5.1.50
BUILD/autorun.sh
./configure '--with-mysqld-user=mysql' '--prefix=/usr/local/mysql' '--with-embedded-server' '--with-partition' '--with-innodb' '--without-ndbcluster' '--with-archive-storage-engine' '--with-blackhole-storage-engine' '--with-csv-storage-engine' '--without-example-storage-engine' '--with-federated-storage-engine' '--with-extra-charsets=complex'
make -j2 && make install
/usr/local/mysql/bin/mysql_install_db --user=mysql
chown -R root:mysql /usr/local/mysql
chown -R mysql /usr/local/mysql/var/
cp -p /usr/local/src/mysql-5.1.50/support-files/my-medium.cnf /etc/my.cnf
cd /etc/ld.so.conf.d/
cd /usr/local/src/mysql-5.1.50/include/
cp my_compiler.h /usr/local/mysql/include/mysql/

cp -p /usr/local/src/mysql-5.1.50/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
chkconfig mysql on


vim /etc/my.cnf
-----
[client]
default-character-set=utf8

[mysqld]
old_passwords = 1
character_set_server=utf8

[mysql]
default-character-set=utf8
-----

vim /etc/ld.so.conf.d/mysql.conf
-----
/usr/local/mysql/lib/mysql
-----
ldconfig

vim .bashrc
-----
PATH=/usr/local/mysql/bin:$PATH
-----
source .bashrc

service mysql start

mysql -uroot -Dmysql -p
mysql> update user set password=password('********') where user = 'root';
mysql> delete from user where user = '';
mysql> flush privileges;
mysql> exit

#mysqlftppc(mecab plugin)インストール
cd /usr/lcoal/src
wget http://sourceforge.net/projects/mysqlftppc/files/mysqlftppc/1.6/mysqlftppc-mecab-1.6.tar.gz/download
tar xzvf mysqlftppc-mecab-1.6.tar.gz
cd mysqlftppc-mecab-1.6
./configure --with-mysql-config=/usr/local/mysql/bin/mysql_config --with-mecab-config=/usr/local/bin/mecab-config
make -j2 && make install

#Plugin組み込み
mysql -uroot -p
mysql> install plugin mecab soname 'libftmecab.so';

#my.cnf編集
vim /etc/my.cnf
-----
[mysqld]
# mysqlftppc
mecab_normalization = KC
mecab_unicode_version = 3.2
mecab_dicdir = /usr/local/lib/mecab/dic/naist-jdic
-----

service mysql restart


- Pluginインストール確認

mysql> show plugins;
| mecab      | ACTIVE | FTPARSER       | libftmecab.so | BSD     |

mysql> SHOW STATUS LIKE "Mecab_info";
+---------------+-----------------------------------------+
| Variable_name | Value                                   |
+---------------+-----------------------------------------+
| Mecab_info    | with mecab 0.98, ICU 4.4.1(Unicode 5.2) |
+---------------+-----------------------------------------+

mysql> SHOW VARIABLES LIKE "mecab%";
+-----------------------+-------------------------------------+
| Variable_name         | Value                               |
+-----------------------+-------------------------------------+
| mecab_dicdir          | /usr/local/lib/mecab/dic/naist-jdic |
| mecab_normalization   | KC                                  |
| mecab_unicode_version | 3.2                                 |
| mecab_userdic         |                                     |
+-----------------------+-------------------------------------+


- 検索テスト

mysql> use test;
mysql> CREATE TABLE me (c TEXT, FULLTEXT(c) WITH PARSER mecab) ENGINE=myisam DEFAULT CHARSET=utf8;
mysql> INSERT INTO me VALUES("今日の天気は晴れです。");
mysql> SELECT * FROM me WHERE MATCH(c) AGAINST('+"今日の天気"' IN BOOLEAN MODE);
  • ICUを使用したUnicodeの正規化に関しては以下のサイトの「Unicode正規化」を参照して下さい

SourceForge.net: Home-j - mysqlftppc