インデックスの作成

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には<head>~</head>内に以下を追記することを強く推奨。

<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専用にそのデーターを変換しなければならない。

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