php namazu関数の罠

今でも使えるPHP用namazu関数。しかしコイツ、猛烈な罠があります。PHPスクリプト内に以下のようなコードが含まれていないと、文字化けしたり、正しく検索が行えなかったりということが起きます。

putenv(“LANG=ja”);

Namazuは環境変数LANGを見て「日本語を処理するかどうか?」を判断します。あるいは設定ファイルnamazurcで日本語処理の有無を切り替えます。

ところが、PHP用のnamazu関数を動かす場合、namazurcは読み込まれません。その上、環境変数LANGはApacheのもの(ほとんどの場合LANG=C)が読み込まれるため、日本語処理が行われないのです。

この結果、入力した検索文が分かち書きされず、常に入力した文章の完全一致検索が行われ、検索がヒットしないというようなことも起きます。対処はPHPコードの先頭あたりに上記の一行を加えるのが簡単です。

しかし最大の対策は「namazuを使うのをやめる」ことでしょう。

Google カスタム検索エンジンサービスは、デザインを自由に変更できる上に、有料版は広告を消すこともできます。検索精度の低いNamazu何ぞよりも、はるかに便利です。しかもメンテナンスも容易。

私もなるべく、Googleカスタム検索エンジンをお勧めするようにしてます。安いし。

返信を残す

メールアドレスが公開されることはありません。