phpBB3で掲示板を建てたのだけど、困ったことがある。
それは日本語でトピックを検索すると、hitするワードとhitしないワードがあること。

phpBB備え付けの検索の場合、自前でキーワード分割しているそうで、特に日本語の分割がもう1つ直感的でないのが困った。

phpBBは検索バックエンドを、phpBB自前とMySQLにお任せするモードの切り替えができる。
じゃあ、MySQLに組み込みで日本語もOKな全文検索エンジンTritonnを使ったら解消するんじゃなかろーか。
ということでやってみた。

環境:
CentOS:5.2(元5.1、yumでupgrade)
php:5.1.6-20.el5_2.1
phpBB:3.0.2
MySQL:Tritonnプロジェクトが配布しているもので置き換える

手順メモ:
  • 既に起動しているmysqldを停止
    # /etc/init.d/mysql stop
  • mysqlをアンインストール
    ここの環境では、すでにmysql(5.0.45)がインストールされていたが、削除する。
    php-mysqlが依存していて削除できなかったので--nodepsで強行
    # rpm -e --nodeps mysql mysql-server
  • ハマったのがphpのモジュール。
    ここの環境では「php-mbstring」がインストールされておらず後々ハマることに。
    別の場所のCentOS5.1には入ってたんだけどな~。何の依存だったんだろう・・・。
    とにかくyumでインストール
    # yum install php-mbstring
  • tritonnプロジェクトからrpmを入手しインストール
    http://sourceforge.jp/projects/tritonn/files/
    MySQL-client-5.0.51a-tritonn.1.0.10.i386.rpm
    MySQL-server-5.0.51a-tritonn.1.0.10.i386.rpm
    MySQL-shared-5.0.51a-tritonn.1.0.10.i386.rpm
    mecab-0.97-tritonn.1.0.10.i386.rpm
    mecab-ipadic-2.7.0.20070801-tritonn.1.0.10.i386.rpm
    senna-1.1.3-tritonn.1.0.10.i386.rpm
    # rpm -Uvh ダウンロードしたrpm
  • 共有ライブラリを更新したので一応リフレッシュした
    # ldconfig
    # /etc/init.d/httpd restart
    
  • phpBBをセットアップする
    phpBB本家からアーカイブを入手
    適当な場所に展開
    apache経由で参照できるようにconf設定
    database作って、
    ブラウザでセットアップ開いて、指示に従って終了
  • Admin CPに入る
    • [メイン]タブ → サーバ設定 → 検索設定
      検索バックエンドを「Fulltext mysql」に変更
      「latin系キャラクタセット以外のUTF-8文字の使用(mbstringによるサポート)」が「はい」になっていることを確認。ウチの環境の場合、「PCREによるサポート」は「いいえ」になってる。
      で保存
    • [メンテナンス]タブ → データベース → 検索インデックス
      「Fulltext mysql」の「インデックス作成」を押す

これで準備完了。

後は適当にトピックを書き込んで検索するだけ。
結果は期待通り上々。
なんというか抽象化・隠蔽の妙を見た、という感じ。多謝多謝。