#navi(Namazu)

インデックスの作成

namazuをはじめとする全文検索エンジンは、 インデックス と呼ばれる検索語句によく使われるワードを格納したデーターベースを作成し、検索時にそこを参照することによって、高速性、低負荷性を実現している。このため、そのデーターベースを自分で作成する必要がある。namazuでは、mknmzというコマンドでこれを実現する。

まずは、namazurcとmknmzcの設定を行う。先ほどの/home/name/etc/namazuにインストールされたひな形をダウンロードし、必要箇所を設定する。ローカルでインストールされているため、すべて変更する必要がある。(/???/var/namazuの/???を/home/nameに変更)

Namazuの設定

:namazuc|
インデックスの格納ディレクトリ:

Index /home/name/var/namazu/index

テンプレート格納ディレクトリ(通常は、インデックスと同じ)

Template /home/name/var/namazu/index

検索結果のアドレスの書き換え。(上が一般用、下がWiki用。 順番に注意! ):

Replace /home/name/public_html/ http://domain.co.jp/ Replace /home/name/public_html/wiki/ http://domain.co.jp/?

サブドメインを使っている場合は、以下のようにすると反映される。

Replace /home/name/public_html/sub/ http://sub.domain.co.jp/

言語の設定。(これを忘れるとちゃんと日本語にならない)

Lang ja

:mknmzc|
アドレス(別にメールアドレスでなければならないと言うことは無い・・・と思う):

$ADDRESS = 'yourname@domain.co.jp';

NKFのインストール先

$NKF = "/home/name/bin/nkf";

kakasi

$KAKASI = "/home/name/bin/kakasi";

茶筅

$CHASEN = "/home/name/bin/chasen";

漢字の読みに使うスクリプトのパス(ここでは、kakasiを選んでいる。)

$WAKATI = $KAKASI;

テンプレートの作成

現状では、テンプレートを読み取ってないのでスクリプトをwebで実行しても白紙の状態になるだけである。次は、このテンプレートを作成する。

cp /home/name/share/namazu/template/NMZ.body.ja /home/name/tmp/namazu/ cp /home/name/share/namazu/template/NMZ.foot.ja /home/name/tmp/namazu/ cp /home/name/share/namazu/template/NMZ.head.ja /home/name/tmp/namazu/ cp /home/name/share/namazu/template/NMZ.result.normal.ja /home/name/tmp/namazu/ cp /home/name/share/namazu/template/NMZ.result.short.ja /home/name/tmp/namazu/ cp /home/name/share/namazu/template/NMZ.tips.ja /home/name/public_html/tmp/namazu/

この例では、tmpディレクトリのnamazuにテンプレートをコピーしている。これらのファイルは、HTMLでかかれている。自分のサイトのデザインにあわせて修正してみよう。なお、 文字コードはどのファイルもEUC-JP である。これを間違えると文字化けの原因となる。オリジナル版では記述されていないが、NMZ.head.jaには~内に以下を追記することを強く推奨。

<meta http-equiv="content-type" content="text/html;charset=EUC-JP" />

これは、namazuが検索する対象の文字コードに関わらず、出力はEUC-JPで処理されるからであり、異種文字コード間で使用時に文字化けをふせぐためである。

ファイル名とその内容は以下の通り

~ファイル名~内容
NMZ.body.ja検索フォームと説明
NMZ.foot.jaフッタ
NMZ.head.jaヘッダ
NMZ.result.normal.ja検索結果のテンプレート
NMZ.result.short.ja簡易検索結果のテンプレート
NMZ.tips.ja検索方法のヘルプ

PukiWikiの記事の内容をインデックス化する

PukiWikiのwikiデーターは、ご存じの通りディレクトリ『wiki』内に*.txtとして存在する。このため、単純に

/home/name/bin/mknmz -f -O /home/name/var/namazu/index/ -L ja -c -K /home/name/public_html/wiki/

と、コマンドを実行してもヒットするのはwikiの生データであり、たとえば、FrontPageが検索結果に出た場合、そのアドレスの行き先が

http://logue.tk/wiki/46726F6E7450616765.txt

になってしまうだろう。ここで、ほしいのは、その文章のアドレスであるため、Namazu専用にそのデーターを変換しなければならない。

この変換作業を行うために フィルタ という機能を使う。