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

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

  • mecab-0.96.tar.gz
  • mecab-ipadic-2.7.0-20070801.tar.gz
  • senna-1.0.9.tar.gz
  • MySQL-5.0.45-tritonn-1.0.6.tar.gz

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 に続く