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

MeCab + Senna + Tritonn で MySQL 全文検索を試す

以前、自作 N-gramPHP プログラムを書いて、日本語全文検索MySQL の標準機能で試したが、文をまるごと突っ込んで検索するといった場合、AND検索が著しく行われるため、速度が落ちることがわかった。メジャーな組み込み型全文検索を試してみる。
を参考にした。

ダウンロードしてきたパッケージ

MeCab のビルドとインストール

$ ./configure --prefix=/usr --with-charset=utf8
$ make
$ sudo make install

Mecab-ipadic のインストール

$ ./configure --prefix=/usr --with-charset=utf8
$ make
$ sudo make install

Senna のビルドとインストール

$ ./configure --prefix=/usr
$ make
$ sudo make install

Tritonn (MySQL) のビルドとインストール

$ ./configure \
 --prefix=/usr/local/mysql-5.0.45 \
 --localstatedir=/usr/local/mysql-5.0.45/data \
 --libexecdir=/usr/local/mysql-5.0.45/bin \
 --enable-thread-safe-client \
 --enable-local-infile \
 --enable-assembler \
 --with-pic \
 --with-fast-mutexes \
 --with-zlib-dir=bundled \
 --with-big-tables \
 --with-yassl \
 --with-readline \
 --with-archive-storage-engine \
 --with-blackhole-storage-engine \
 --with-example-storage-engine \
 --with-federated-storage-engine \
 --with-innodb \
 --with-charset=utf8 \
 --with-extra-charsets=all \
 --with-mysqld-user=mysql \
 --with-senna --with-mecab
$ make
$ make bin-dist

※ make bin-dist を実行すると バイナリ配付版と同じ内容の tarball を作成する。

/usr/local に配備および初期設定

# cp mysql-5.0.45-linux-i686.tar.gz /usr/local
# cd /usr/local
# gunzip -c mysql-5.0.45-linux-i686.tar.gz | tar xvf -
# ln -s mysql-5.0.45 mysql
# cp /usr/local/mysql/support-files/my-small.cnf /etc/my.cnf
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d
# scripts/mysql_install_db
# /etc/init.d/mysql.server start

UTF-8 に設定

# vi /etc/my.cnf

/etc/my.cnf を編集して下記のエントリ

[client]
default-character-set=utf8

/var/senna を作る

# mkdir /var/senna
# cd /var/senna
# vi senna.conf

senna.conf を作成して下記を定義する。

DEFAULT_ENCODING utf8

MeCab + Senna + Tritonn で MySQL 全文検索を試す(2) - Tosshi Note に続く