FreeBSD-6.2環境にTritonn-1.0.3をセットアップする

Tritonn(Senna)、チョーいいです
http://qwik.jp/tritonn/
http://qwik.jp/senna/

TritonnMySQL全文検索エンジンSennaを組み込むためのパッチ(以下、MySQLバインディングパッチ)を開発する、Sennaのサブプロジェクトです。

開発者mirこと池田さんのブログはMySQL内部の話まで細かく解説されており必見です
http://d.hatena.ne.jp/mir/

というわけで使ってみましょう!
mecabなしでインストールしてます。

まずはSennaのインストール


$ fetch http://iij.dl.sourceforge.jp/senna/26563/senna-1.0.8.tar.gz;
$ tar xvzf senna-1.0.8.tar.gz;
$ cd senna-1.0.8;
$ CC=gcc CXX=gcc LDFLAGS=-static ./configure --prefix=/usr --without-mecab;
$ gmake && sudo gmake install;
$ cd ../;
次にTritonnMySQLのインストール

$ fetch http://osdn.dl.sourceforge.jp/tritonn/26391/mysql-5.0.41-tritonn-1.0.3.tar.gz;
$ tar xvzf mysql-5.0.41-tritonn-1.0.3.tar.gz;
$ cd mysql-5.0.41-tritonn-1.0.3;
$ CC=gcc CXX=gcc ./configure \
--prefix=/usr/local/mysql \
--localstatedir=/usr/local/mysql/data \
--libexecdir=/usr/local/mysql/bin \
--enable-thread-safe-client \
--enable-local-infile \
--enable-assembler \
--with-pic \
--with-fast-mutexes \
--with-client-ldflags=-static \
--with-mysqld-ldflags=-static \
--with-zlib-dir=bundled \
--with-big-tables \
--with-yassl \
--with-readline \
--with-archive-storage-engine \
--with-blackhole-storage-engine \
--with-csv-storage-engine \
--with-example-storage-engine \
--with-federated-storage-engine \
--with-innodb \
--with-extra-charsets=complex \
--with-charsets=utf8 \
--with-mit-threads=no \
--with-named-thread-libs=-lthr \
--with-senna;
$ gmake && sudo gmake install;
$ cd ../;
インストールまではせずにtarボールを作る場合は、

$ gmake && sudo scripts/make_binary_distribution --no-strip;
がいいらしいです。
その他コンパイルオプション、

CFLAGS='-g -O2 -Wall -pipe -MD' \
CXXFLAGS='-felide-constructors -fno-rtti -fno-exceptions -g -O2 -Wall -pipe -MD' \
このあたりはお好みで。(実はあまりよく分かってません ^^;)

あとは通常のMySQL全文検索構文である、where区のmatch .. againstを使うだけです。詳しくはこの辺参照。
http://qwik.jp/tritonn/userguide.html

懸念点

  • 1文字の単語に対する検索(1-gram)はどうなんだろ。。。
  • insert,deleteを頻繁に繰り返した場合のsennaインデックスの断片化とかはどうなんだろ。。

そのうちMLで聞いてみようと思います。