さくらインターネットスタンダードプランを利用しているのですが、全文検索をサイトに組み込み時に填ったので、記録しておく。
会社の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>