グループの情報共有でwikiを使っています。
最初はpukiwikiでしたが、最近はもっぱらdokuwiki を使ってます。
アクセス権限、履歴管理、プラグインの機能があるのが良いです。
最近、新しいプロジェクトの用語集用のwikiサイトを検討して、
mediawiki を入れてみたのですが、意外に用語集用の機能がないことに気づき
dokuwikiでやってしまうことに決めました。
で、以前から困っていた、dokuwikiの全文検索の日本語対応に手をつけることにしました。
dokuwikiはnamazu などを入れなくても独自に全文検索の機能があるのですが、
なぜか本文中の日本語をうまく拾ってくれません。
いくつかのサイトで対応情報がでてるのを試してみましたがうまくいきませんでした。
もう一度確認して、やってみることにします。
その情報源は、
DokuWikiの日本語対応 [DokuWiki@higuchi.com]プログラムを作ってます dokuwikiのセットアップの2つ。
最初のhiguchiさんの修正をもとにishijimaさんがアレンジしています。
まず、自分の手持ちの環境は、以下の通り
OS:WindowsXP sp3 とWindows2003
PHP:VertrigoServでインストールした5.2.6(cli)、システム環境変数追加。
Web:IISにfastcgiでPHP追加
dokuwiki:2008-05-05版
以前、うまく行かなかったので、まじめに修正内容を読んでみます。
higuchiさん検索の日本語対応 の箇所が対象です。
・dokuwikiには日本語のわかち書きがないのでわかち書き用にmecab導入
・mecabにテキストを入力、わかち書きしたテキストを取り出すためにpipeを使用
・アジア言語では1文字1単語に区切っている箇所をコメントアウト
です。見たままです。
ishikawaさんishikawaさんと若干違いましたので、どういうふうに違うのか挙げてみます。
・pipeを使う箇所が同じなのでgetWakati()という関数にまとめた
・mecabをpipeで使う際、windowsだとcmd.exe経由になるので、proc_open()のオプションで回避する
・mecabを使用する際に、pipeを使う前にwindows用に文字コードをSJISにして、pipeの後に戻す。
という修正でした。
最初に2名のをそのまま適当にコピペしてみたのですが、うまくいきませんでした。
それでわかったのは、
ishikawaさんのgetWakati()内の$encodeが最初は値が指定がない。
これは、エンコード指定の箇所が若干違うんじゃないかと思います。
function idx_getPageWords() の
$body = rawWiki($page);
の後に以下のコードを追加する。
$body = rawWiki($page);
これはどうやらコピペミスだと思われます。
適当にお二方の修正部分をアレンジしてみました。
で、
本文を編集した箇所はうまくいったのですが、
いくつか上手くいきません。
・何回か修正したら、うまく検索に反映されない場合がある。
・コマンドラインで全ページの検索インデックスを作り直すことができるけど、フリーズする。
もうひと頑張り調べたらやっと解決できましたが、続きはまた次のエントリで。
2009年03月06日
以下に補足しました。
猫派 dokuwiki の日本語全文検索の修正しました の続き
スポンサーサイト
コメントの投稿