Mysqlftppcを入れてみた
日本語全文検索エンジンというと、sennaやTritonnなどが有名ですが、今回は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);