MySQL5 [senna 日本語検索]

MySQL で日本語の高速な全文検索が出来るsenna を実装してみます。MySQL をソースからビルドする事になります。
更新日 2016-02-13

インストール

MeCabのインストール

MeCab(和布蕪) は、日本語の文章を解析して検索用データにするエンジンです。英語はスペースで切れますが、日本語は切れないので アルゴリズム的に困難な作業と思われます。senna に相応しい高性能エンジンと言えるでしょう。
オフィシャルサイト からダウンロードできます。
// 開発環境のインストール
yum groupinstall "Development Tools" -y
yum groupinstall "Compatibility libraries" -y

// 関連
yum install gcc-c++ ncurses-devel -y

cd /usr/local/src
wget "https://mecab.googlecode.com/files/\
mecab-0.996.tar.gz" --no-check-certificate
tar zxfv mecab-0.996.tar.gz
cd mecab-0.996

./configure --with-charset=utf8
make
make check
make install
次にMeCab 用の辞書(IPA 版)をインストールします。IPA を使う理由は、単に推奨と書かれているからです。コンパイルしてインストールします。
同じくオフィシャルサイトの下の方から、ファイル名は mecab-ipadic-2.7.0-20070801.tar.gz です。
cd /usr/local/src
wget "https://mecab.googlecode.com/files/\
mecab-ipadic-2.7.0-20070801.tar.gz" --no-check-certificate
tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801

./configure --with-charset=utf8
make
make install

sennaのインストール

続いてsenna 本体をインストールします。
同じくsourceforge.netから、ファイル名は senna-1.1.5.tar.gz です。ややコンパイルに時間がかかります。
cd /usr/src

tar xvfz senna-1.1.5.tar.gz

cd senna-1.1.5

aclocal
autoheader
automake
./configure --prefix=/usr
make
make install
utf8 で扱う予定なので/var/senna/senna.conf を編集する。
mkdir /var/senna
vi /var/senna/senna.conf

 DEFAULT_ENCODING utf8

MySQL 5.0.89 のインストール

senna のMySQL へのバインディングに関しては、Tritonn プロジェクト の管轄となっています。バイナリやソースコードも公開されていますが、あえてMySQL はオフィシャルよりダウンロードしてくる 事にします。またsourceforgeからはパッチ(tritonn-1.0.12-mysql-5.0.87.diff)をダウンロードしておきます。
ln -s /usr/lib/libncurses.so.5 /lib64/libncurses.so.5


cd /usr/src
wget "http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.89.tar.gz\
/from/ftp://ftp.iij.ad.jp/pub/db/mysql/"

tar zxvf mysql-5.0.89.tar.gz
cd mysql-5.0.89

patch -p1 < ../tritonn-1.0.12-mysql-5.0.87.diff

aclocal
autoheader
automake

./configure --prefix=/usr/local/mysql-5.0.89\
 --with-charset=utf8\
 --with-extra-charsets=complex\
 --with-named-curses-libs=/lib64/libncurses.so.5


make
make install

ln -s /usr/local/mysql-5.0.89 /usr/local/mysql
続いてmysql を動かす為のユーザーを作成し、データベースの初期化を行います。
groupadd mysql
useradd -g mysql mysql

cd /usr/local/mysql
bin/mysql_install_db --user=mysql

chown -R root  .
chown -R mysql var
chgrp -R mysql .
設定ファイルの雛型が用意されてますので、これを/etc/my.cnf としてコピーします。一般用途ですのでmy-medium.cnf で良いと思います。 ついでに日本語に対応させる為、my.cnf にutf-8 を使用する旨を記述します。
// 設定ファイルの雛型をコピー
cd /usr/local/mysql
cp share/mysql/my-medium.cnf /etc/my.cnf

// 日本語の設定
vi /etc/my.cnf

[mysqld]
 default-character-set=utf8		// 追加

[mysql]
 default-character-set=utf8		// 追加
// 自動起動を設定
cd /usr/local/mysql
cp share/mysql/mysql.server /etc/rc.d/init.d/mysql
chkconfig --add mysql

// 起動!
service mysql start