mt-search.cgi は実際にビジネスブログ等で使うのはちょっと非力な気がするので (一定時間置かないと再検索できなかったり、タグの中身も検索してしまったり検索速度の問題もあるし) 、代替プログラムを書いてみた。
PHPでMySQLを検索するという手もあるわけだが、MySQL限定っていうのもMTらしくないし、かといって重たくなっても嫌なのでプログラム自体はMT APIを利用したPerlプログラムとして、PHPからPerlを呼び出して検索するようにした。SQLで検索せず正規表現で一つ一つマッチするかどうか見ている。
SQLで検索するよりは不利だけど、CGI起動の待ち時間が無いので体感速度的にはまずまずかと。
同じプログラムでCGIでも動作するように作ったので一応両方同じ動作をする。
ローカルで1000エントリ(SQLite)程度を対象に検索して0.2〜0.3秒。
公開用に設置している以下の環境ではマシンがちょっと非力ではあるけどMySQL、エントリー数は100強。
せっかくなので、PHP版:
※1月31日追記:PHP版をHyper Estraierを使用したものに変更しました。
CGI版:
mt-search.cgi:
※広告↓貼っておいて何ですが、MT構築・カスタマイズは当社へ!

機能としては、
- Blog名(+description)、カテゴリー名(+description)、エントリー名+エントリー本文(+text_more,excerpt,keyword)を対象とする
- タグの中身は検索しない (画像のALT属性は検索する)
- Blog名、カテゴリー名でも検索するかどうかは設定で変更できる
- 指定した件数でページ送り
- スペース区切りでand検索
# このまま移転しちまおうかな...
カテゴリー: MovableType, Web制作・ビジネス, プログラミング


コメント (4)
1月26日追記;
Ver0.2 処理の高速化。
ブログやカテゴリー情報を一旦ハッシュに入れてから処理するようにして極力DBへのアクセスを減らした。
投稿者: Junnama | 2007年01月26日 23:05
日時: 2007年01月26日 23:05
3月16日追記:
FastCGIにしたらCGI版もそこそこのスピードが出るようになった。
投稿者: Junnama | 2007年03月16日 12:36
日時: 2007年03月16日 12:36
はじめまして。
作成されたmt-search.cgiの代替プログラムは公開されているわけではないのでしょうか。
mt-search.cgiをなんとかできないかと思い検索エンジンから記事をみつけ、公開されていると(勝手に)思い、リンクを「対象をファイルに保存」などしてみたのですがcgiが実行されてしまいます。
投稿者: yhiroaki | 2007年06月01日 21:27
日時: 2007年06月01日 21:27
yhiroakiさん
Junnama です。
やっつけで書いたものなので、公開はしていません。時間があったらちゃんと作り直したいと思っているのですが。
Hyper Estraierと連動させるプラグインは、仕事の方で使おうと考えていますので、CGI版をいずれ公開したいと思います。
投稿者: Junnama | 2007年06月04日 19:50
日時: 2007年06月04日 19:50