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とのこと。

NKFは2.0.4からUTF-8に対応

phpで検索語句をラッピングしてnamazu.cgiに渡すようにすればOKとのことで、

post.php

<blockquote><?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&whence=$whence&max=$max&lang=$lang");
exit;
?>

検索フォーム

<blockquote><form method="post" action="./post.php">
<p><label>サイト内Namazu検索
<input type="text" name="query" accesskey="q" tabindex="1" size="20" value="" /></label>
<input type="submit" name="submit" tabindex="2" accesskey="s" value="検索" />
</p>
</form>

改訂 Namazuシステムの構築と活用

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA