kumasearch.cgiをバージョンアップしました。

◆関連記事:mt-search.cgiの代わりの検索プログラムを作ってみた。

で公開しているmt-search.cgiの代わりに利用できる高速な検索cgiですが、バージョンアップしましたのでご報告しておきます。

MySQL環境で使ってみた方らご連絡を頂いたのですが、検索できないとのことで調べてみました。こちらでも調査用にMySQL環境で新規インストールして環境を作ってみました。

で、まあ、このブログのログを新規環境にインポートしようとしたところでいったんハマりましたw。インポートしたもののインポートの途中でエラーになるし、入った分も文字化けしてどうしようもないんですね。

で、色々調べてみたところmt-config.cgiに下の1行を追記するだけで済みました。場合によってはテーブルかDBを削除してからやり直したす必要があるかもしれません。

SQLSetNames 1

 

◇関連:SQLSetNames | 環境変数リファレンス

◇関連:XREAのサーバーでMySQL5を使っているとMovable Type4をインストールするとそれまで使っていたデータベースのデータが文字化けするようだ。: マイチキンハート

◇関連:Movable Type+MySQLで(本来はSET NAMES cp932と発行すべきなのに)SET NAMES sjisをMySQL Serverへ発行してしまう問題 – hirohama.mt

で、実際新しく作った環境でkumasearch.cgiで検索してみると検索できませんでした。英単語での検索だと引っかかるので文字コードがらみであることが予想できました。

しかし、英単語で検索された際の検索結果の文字まで文字化けしています。どうやらMySQLが返してくる文字コードがUTF-8じゃない模様。その関係で検索引っかからないと思われ。

ログのインポート後の文字化けの問題も関係ないのかと思ってたらこの件らしく結局MySQLがらみの問題でした。MySQLがバージョン4ぐらいから文字コードを分けたらしいですね。クライアント側で明示してクエリーを発行しろということらしいです。普段はUTF-8固定のSQLiteを使ってるのでMySQLがこんな仕様だとは知りませんでした。

◇関連:MySQL/UTF8 – asakura
◇関連:へぼへぼCTO日記 – libmysqlclientを使うプログラムはset namesをutf8であっても使ってはいけない

そういうわけで、MySQL時は

set names utf8

して

connect時にmysql_server_prepare=1

も付けるようにしました。

一応これでMySQL5.1の環境で検索できるようになりました。

MySQLで動かなかった人はお試しください。

最新版は一番上のリンクの先のページからダウンロードして下さい。

タグ : , ,