PostgreSQL上にMediaWiki環境を構築 (2)
PostgreSQL のインストールに続き、MediaWiki の設定をします。日本語のページを検索できるようにするため、textsearch-ja を追加します。
MediaWiki の初期設定
ブラウザで http://localhost:8080/mediaWiki/ へアクセスすると MediaWiki のページが表示されるはずです (図3)。"set up the wiki" をクリックして初期設定をしましょう。必要な項目は予め設定されているので、以下の項目を設定するだけで基本的な設定は完了します。
- Wiki name
- Contact e-mail
- Language (「ja - 日本語」へ変更する)
- Wiki 管理ユーザのパスワード
図3 : MediaWiki 初期設定
緑色の文字で "Installation successful!" と表示されたらインストールは成功です。その後 config/LocalSettings.php を移動するように指示されるので、「C:\Program Files\PostgreSQL\EnterpriseDB-ApachePhp\apache\www\mediaWiki\config」にある LocalSettings.php を1つ上のフォルダへ移動します。
その後、再度 http://localhost:8080/mediaWiki/ へアクセスすると、「メインページ」が表示されるはずです。これで MediaWiki を使えるようになりました。ただし、まだページを作成するのは待ってください!
あれ?日本語で検索ができない!
メインページには「使い方」という単語が見えます。しかし、検索ボックスに「使い方」と入力して検索してもページが見つかりません (図4)。検索機能がうまく動作していないようです。原因は全文検索の初期設定が「英語用」になっているためです。これを「日本語用」に変更する必要があります。
図4 : MediaWiki 検索ミス
PostgreSQL 8.3 では全文検索機能 (旧 tsearch2) が本体に組み込まれました。MediaWiki でもこの全文検索を使っています。全文検索の設定として英語やヨーロッパ系の20以上の言語が予め用意されているのですが、残念ながら日本語用の設定はありません。「単語がスペースで区切られていない」言語には対応していないのです。そこで、拡張モジュールとして公開されている textsearch-ja を導入して日本語で検索できるようにしてみます。
日本語全文検索の設定
日本語で全文検索するには以下のモジュールが必要です。
- textsearch-ja : http://textsearch-ja.projects.postgresql.org/index-ja.html
- textsearch_ja-win32-8.4.0.zip を使用します。
- MeCab : http://mecab.sourceforge.net/
- mecab-win32 の mecab-0.97.exe を使用します。
textsearch-ja は PostgreSQL の組み込み全文検索の拡張モジュールで、日本語文字列を検索できるようにします。そのためには文を解析して単語に分割する必要があり、そこで MeCab ライブラリによる形態素解析を利用しています。
まず最初に MeCab をインストールします。Binary package for MS-Windows 「mecab-0.97.exe」をダウンロードしましょう。バージョン 0.97 より、Windows 版のインストーラの中で辞書の文字コードが選択できるようになりました。ここで必ず PostgreSQL のサーバエンコーディングと同じ UTF-8 を選んでください(図5)。
図5 : MeCab の辞書エンコーディング選択
次に、MeCabのライブラリ (libmecab.dll) に対してWindowsのDLL検索パスを通します。以下の手順のどちらかを行ってください。
- 「C:\Program Files\MeCab\bin\libmecab.dll」を「C:\Windows\System32」にコピーする
- 「C:\Program Files\MeCab\bin」を環境変数PATHに追加する
その後、textsearch-ja をインストールします。zip 書庫を展開すると現れる 8.3 フォルダの下の lib と contrib フォルダを「C:\Program Files\PostgreSQL\8.3」へコピー(マージ)します。その後、mediawiki データベースへ登録するため、「スタートメニュー > PostgreSQL 8.3 > コマンド・プロンプト」を起動し、以下を実行してください。
(実際には改行せずに1行で入力します) C:\Program Files\PostgreSQL\8.3\bin> psql -d mediawiki -U postgres -f "C:\Program Files\PostgreSQL\8.3\share\contrib\textsearch_ja.sql"
次に、PostgreSQL の設定ファイルを変更して、デフォルトの全文検索設定として「日本語」が使われるようにします。「C:\Program Files\PostgreSQL\8.3\data\postgresql.conf」の以下の箇所を変更します。
default_text_search_config = 'pg_catalog.english' ↓ default_text_search_config = 'pg_catalog.japanese'
これで設定は完了しました。設定ファイルをリロードして変更を反映させます。pg_ctl reload または スタートメニューから「構成をリロード」を実行します。
再度 MediaWiki で日本語ページを検索する
ブラウザで MediaWiki のメインページを開き、インデックスを更新するため、一度「編集」して少し書き換えます(スペースや改行の追加/削除などなんでも構いません)。その後、再び検索ボックスに日本語を入力して検索すると……今度は成功しました! (図6)
最初は MeCab が辞書をディスクから読み込むため検索に少し時間がかかりますが、いったん辞書がメモリ上にキャッシュされてしまえば、後はスムーズに検索できるようになると思います。
図6 : MediaWiki での日本語検索
これで MediaWiki を使用する準備が整いました。