namazu UTF-8 + apache EUC-JP

ちょいと全文検索をサイトに組み込み時に填ったので、記録しておく。

会社のWEBサイトは、さくらインターネットでスペースを借りているわけですが、apacheでEUC-JPな設定になっておりまして、UTF-8を使ったページを全文検索の対象になるようnamazuをユーザーフォルダにインストールしました。

mknmzを動かしインデックスを作成し、index.cgiを設置、全文検索出来ると確認したわけです。が、mknmzで作成されるテンプレートの文字コードは、EUC+LFになっておりまして、全く問題ないわけです。当たり前ですが・・・

namazuが動く事を確認したあと、既存のページに検索フォームを設置し確認したところ、文字化けで日本語が一切検索対象に出来ない事が判明。

ググった結果、文書の文字コードがUTF-8の場合、NKFのバージョンを2.0.4以上にすればOKとのこと。
<blockquote>NKFは2.0.4からUTF-8に対応</blockquote>
phpで検索語句をラッピングしてnamazu.cgiに渡すようにすればOKとのことで、

<strong>post.php</strong>
<blockquote>&lt;?php
$url = ‘http://MySiteDomain/namazu.cgi’;
$query = $_POST[‘query’];
$whence = ‘0’;
$lang = ‘ja’;
$max = ’20’;
$query = rawurlencode(mb_convert_encoding($query, ‘EUC-JP’, ‘auto’));
header(“Location: $url?query=$query&amp;whence=$whence&amp;max=$max&amp;lang=$lang”);
exit;
?&gt;</blockquote>
<strong>検索フォーム</strong>
<blockquote>&lt;form method=”post” action=”./post.php”&gt;
&lt;p&gt;&lt;label&gt;サイト内Namazu検索
&lt;input type=”text” name=”query” accesskey=”q” tabindex=”1″ size=”20″ value=”” /&gt;&lt;/label&gt;
&lt;input type=”submit” name=”submit” tabindex=”2″ accesskey=”s” value=”検索” /&gt;
&lt;/p&gt;
&lt;/form&gt;</blockquote>