mt-search.cgiを削除した
Movable Typeの検索機能を担うmt-search.cgiですが、これがまた激しく検索が遅くて重い。サーバーにもかなりの負荷が掛かってる模様。サーバーやさんに申し訳ないのでmt-search.cgiを止めることにしました。
といいますか、sshでサーバーに繋いでtopコマンドで見てるとですね、かなり頻繁にアクセスがあるんですよね、mt-search.cgiに。でもって、何がアクセスしてるんだろうと思ってログを取ってみるとgoogle botとかmsn botとかが頻繁にアクセスしててload averagesが結構とんでも無いことになってるんですよ。共用サーバーですから、サーバーの全てのリソースを自由に使えるわけではないし、サーバーに負荷が掛かって結構ブログの書き込みとか再構築にも影響があるみたいなので思い切って止めちゃいました。実際検索してもあまりの検索の遅さにイライラする事が多かったのでこれでよかったのではないかと思ってます。
検索機能自体を無くすわけには行かないので代替の検索機能が必要なわけですが、元々Googleの検索ユニットはつけてあります。ですが、これはクロールされた記事のみ検索できるわけですので、クロースされるまで検索できないわけで、必ずクロールされるとも限らないわけで、書いたばっかりの記事は検索出来ない事になるわけでこれだけではちょっと心もとないわけです。
そういうわけでAJAXによる検索機能を付けてみました。
参考にしたサイトは下記のサイトです。
Movable Type 備忘録 – ブログ内検索を高速化 <http://bizcaz.com/archives/2006/09/19-231447.php>
Movable Typeのサイト内検索をAJAXで高速化する : skuare.net <http://www.skuare.net/2007/11/movable_typeajax.html>
暴想: ココログプロとかTypepadとかMTとかブログ人とかその他のブログサービスとかでもAjaxでバックナンバーを検索するJavaScript <http://java.cocolog-nifty.com/blog/2005/12/typepadmtajaxja_c70d.html>
風柳亭 – 別館:書庫のある庵 -: blog_ajax_json_search.jsにパッチ:コメントも含めて検索 <http://furyu.tea-nifty.com/annex/2006/05/blog_ajax_json__94c8.html#search_word=blog_ajax_json_search\.js>
元々は暴想の方が作成されたものを色々拡張されたものの様です。
仕組みとしては、ログを全てテキストログとして出力しておいてそれをajaxで検索して表示するという仕組みの様です。大変高速です。検索結果も同一ページに表示させることが出来ます。もうmt-search.cgiには戻れませんw。しかし、なんでデータベースをSQLで検索している方がベタテキストの検索に激しく負けるような事になっているのかと、思ってしまいます。
検索結果は下の様になります。同一ページに表示されて便利です。
設置方法は上記のリンク先のサイトを参考にして下さい。
注意点として、うちの環境では
<MTEntries all="1">
では記事が中途半端にしかsearch_data.txtに出力されませんでした。
<MTEntries lastn="0">
とする事で全ての記事がsearch_data.txtに出力されるようになりました。
ついでに、グーグルの検索ユニットも新しくなっているようなので変えてみました。検索すると下の様な感じになります。オリジナルのバナーも付けてみましたw。
とにかくAJAXの検索機能は超高速で激しくお勧めします。MTの検索機能のウンコさにお嘆きの貴方、是非試してみてください。
2008.08.17追記:
現状下記のエントリの様に自作のCGIで高速に検索できるようにしている。
MTの記事を超高速で検索できるようにしてみた (KUMA TYPE)
https://blog.kumacchi.com/2008/08/mt_4.html
それと、MT4.2では検索速度が随分ましになっているような気がする。
タグ : MT, mt-search.cgi
mt-search.cgiの負荷に対するrobots.txtの効果
前々からサーバに対する負荷が気になっていた。 movabletype自体の負荷だ…
mt-search.cgiの検索が遅いのでblog_ajax_json_search.jsに乗り換えた。
MovableTypeの標準機能のmt-search.cgiによる検索ですが、 …