MovableTypeでの全文検索が気になって調べてみたらば、
こんな記事を見かけたので。
作ってみた検索用ページはこちら。
全文検索 - NOBODY:PLACE - MUTTER
直近のエントリ1000件の中から、任意のキーワードで検索することが出来ます。
本当は全エントリ(6000弱)にしたかったところなんだけど、
システムの仕様上、全データを書き出してデータファイルとしてまとめておき、
それをJavaScriptで検索してAjaxで表示するということをやっているので、
母数を大きくすると当然データファイルも大きくなり、ということは当然ロード時間も長くなるので…
(全エントリを書き出したら13Mのデータファイルになって、アクセスに30秒くらいかかるようになった)
仕方なく1000件で切り。
まぁ、テスト段階ってことで。
処理自体はほぼいじってなくて、ホの字5さんのスクリプトから変えたところは、
- 表示結果数を10→30件に増やした
- 検索の際に大文字小文字を区別しないようにした
- そのほかデザイン面
といったところ。
使い勝手は、かなりいいね!
アホかって言うくらいあっさりと検索されます。
素晴らしい。
似たような処理で言うと、このあたりもほとんど同じ考え方かな?
暴想: ココログプロとかTypepadとかMTとかブログ人とかその他のブログサービスとかでもAjaxでバックナンバーを検索するJavaScript
パーツとしての体裁のまとめ方が上手。
まぁただ、検索欄を置きたい気分ではなかったので今回は見送り。
もし、きちんと検索欄をおいてやりたいとなったら考えるかも。
(検索欄方式は、ロードしながら処理できるという利点もあるんだよね。実は)
最後に、この検索ページを作るに当たって作成した、データ用インデックステンプレートでも貼っておきます。
キーワードは使ってないので、代わりにタグを格納しておきました。
var start = new Date().getTime();
var data = [{}
<MTEntries lastn="1000">
,{file:"<$MTEntryPermalink$>",title:"<$MTEntryTitle remove_html="1" encode_js="1"$>",time:"<$MTEntryDate format="%Y-%m-%dT%H:%M:%S+09:00"$>",body:"<$MTEntryBody remove_html="1" encode_js="1"$><$MTEntryMore remove_html="1" encode_js="1"$>",category:"<MTEntryCategories><$MTCategoryDescription remove_html="1" encode_js="1"$></MTEntryCategories>",author:"<$MTEntryAuthorUsername$>",keywords:"<MTEntryTags glue=", "><$MTTagName$></MTEntryTags>"}
</MTEntries>
];
data.shift();