Wiki の横断検索と Namazu

※ 以後、Namazu, Namazu って書いているけど、同じ方法が使えれば estraier でもなんでもいいです。

Wiki は普通 grep 検索できるので Namazu は必要ない。よほどページ数が増えればスピードの問題が出てくるが、普通はインデックスを起こすタイプの検索エンジンは Wiki にはそんなに必要ない。1

ただし Wiki が増えた場合はそうはいかない。自分は PukiWiki をローカルで使っているが、WikiFarm というか、複数の Wiki に分けて使っている。PukiWiki は 1.4.4 になって複数の Wiki で同じ lib/ を共有しやすくなったり、以前より複数の Wiki を動かすのは簡単になっている2ので、興味がある人には是非オススメしたい。明らかに目的の違うもの、個人用のスペース(ここに日誌を書いたりする)、期間限定のプロジェクトなどを別々の Wiki に分けておくと何かと扱いやすいのだ。3(先に分けても後から分けてもいい。)ところが PukiWiki には複数の Wiki に対して検索する機能がないのでそこが不便。

というかそもそも PukiWiki には WikiFarm の機能がない。複数の Wiki を PukiWiki 自身が管理しているわけじゃないんだから、そら横断検索ってのも無茶な話。そこで Namazu を使う。Namazu では 1Wiki対1インデックスのオーソドックスなインデックスを起こす。で、template で checkbox を用意して、複数のインデックスに対して一気に検索を掛けられるようにする。

おしまい。

いやいや。

この方法にはまだまだ工夫の余地がある。

  • Wiki のパーサを外部(Web ベースでなくコマンドラインが嬉しい)から利用できる API があると、Namazu の filter を書きやすくなって検索精度を上げやすくなる。
    • サイドバーやナビゲーション要素を除いた HTML が取得できるといちばん嬉しい。
    • 今回の PukiWiki 用フィルタは超簡単なパーサもどきを Perl で別途用意したのだが、本当は PukiWiki のエンジンを利用して HTML を生成できればいちばんよかった。
  • DBMS 前提の Wiki だと Namazu と相性が悪いので、Namazu 用に(ってだけでもないけど)ナビゲーション要素などを除いた HTML を取得できる方法があるといいな。

これが実現できるとどんな Wiki を使っていても Wiki の分割と精度の高い横断検索を実現できる。んだけど、Wiki エンジンの開発者やコミュニティでこういうことに意義を感じている人ってあんまり見ないのはなぜだろう。すげー便利なのに。ひょっとして自分の知らないもっといい方法が密かに定着しているのだろうか。

  1. もちろんページの書き方にもよるかもしれない。 

  2. 本当は skin の共有や Wiki 間の移動をどうナビゲートするかまで考えるとまだ手間が掛かるんだけど。 

  3. たださんもそんなことを以前日記に書いていたと思う。 

More