「世界中の1%の人々へ」の「今日のMovable Type:Ajaxを利用したMT用超高速検索システムはスゴすぎる!」で紹介されてい た検索システムを導入してみた。
結論。
Google Searchなんぞよりはるかに良い。
上記のページで配布されているのは、元々は「暴想」で公開されたものをMT用にパッケージ化してくれたもの。導入方法も丁寧に書かれているので、導入は きわめて簡単である。
以下、私のところで導入した際の注意点。
1.フォームをPHPのモジュールに設置する場合
「Ajax_search_form.txt」に記載されているフォームのコードには、<$MTBlogURL$>のMTタグが使われてい る。PHPのモジュールで読み込む場所にフォームを設置する場合、MTタグはダメ。なので、ここは自分のブログURLを記述。てゆーか、使ってるMTタグ はこの一種類だけなので、それでとくに問題はないんだけど。
2.検索結果表示領域の指定とデザインは別のクラスで
配布されているパッケージでは、検索結果を表示する領域としてresultクラスを用意している。
で、おそらくこの領域は通常、<div class="blog">で囲まれたエリアのすぐ内側、<div class="blogbody">の外側に設定することになると思う。
ここで問題、resultクラスにデザインを設定してしまうと、当たり前だが検索前の通常のページにも適用されてしまう。
ではどーするかというと、「blog_ajax_json_search.js」の中にデザイン用のクラス指定をしてあげれば良い。
function build_search_result_html( result_data, keywords ) {
var html = '<div class="result-style"><div id="search_notice" style="text-align:left; font-size: x-small;">※スペースでAND検索が出来ます。</div><div class="entry-top"></div><div class="entry"><h3>検索結果(' + result_data.length + '件ヒット)</h3><div class="entry-body-top"></div><div class="entry-body"><div class="entry-body-text"><ol type=1 start=1 style="text-align:left;">';
for ( var i= 0; i<result_data.length; i++ ) {
html += '<li><a href="' + result_data[i].link + '#search_word=' + search_keyword + '" style="font-size:normal">' + highlight( result_data[i].title, keywords ) + '</a><br />' + highlight( trunc( result_data[i].body, keywords[0] ), keywords ) + '</li><br />';
}
html += '</ol></div></div><div class="entry-body-bottom"></div><p class="posted" style="text-align:right;"><span class="post-footers"></span><span class="separator"></span><span class="bo_so_copyright"><a href="#" title="もとのページに戻る" onclick="location.reload(true); return false;" onkeypress="location.reload(true); return false;">[もとのページに戻る]</a> <a href="/" title="トップページに戻る" >[トップページに戻る]</a></span></p></div><div class="entry-bottom"></div><div class="date-footer"></div></div>';
return html;
こんな感じで、<div class="result-style">とでもする。でもって、スタイルシートの設定ファイルにデザインを記述すればOK。結果が見つからな かったときの出力用スクリプトでも同様に指定のこと。