2008年1月2日水曜日

MovableType用 namazu2文書フィルタ

namazuのindexを作り直したのは良いけど、検索結果がどうにも気に入らない。

例えば本Blogの先頭に書いてある「お客様」で検索すると、全ページがヒットする(^^;
しかも、検索結果の要約文も下記のように全部Blog先頭部分になる。
plain-namazu-20080101.jpg
これでは元気が出ない。

MovableType用の文書フィルタを探したけど見つけ切れなかったので、
pipermail用のfilterをもとに作成した。ありがとうございます。>菊地様。

ただし、自分のtemplateが出力しているindividual archive file用なので、
いろんな人のBlogに対応させるにはいじらないとダメかも。
 #MovableTypeが出力するHTMLは、MHonArcなどと異なり、
 #HTMLを解釈させるためのtagが埋め込まれていないので
 #検索対象範囲を絞るのに妥協が必要だと思います。

そのフィルタを通してmknmzしたindexで「お客様」を検索した結果が下記。
filtered-namazu-20080101.jpg
所望の検索結果と要約出力になったようだ(^^)。
ちなみに作成したMovableType用フィルタはこちら→mt3.pl
どこに置けば良いかは
mknmz -C
で教えてくれるFILTERDIR:と示されたところ。
そこにmt3.plを置いて、
再び mknmz -C を実行して、「対応メディアタイプ」に
  text/html; x-type=mt3: mt3.pl
と表示されればOK。
実際のindex作成時には、indexを格納させるディレクトリ上で
mknmz -t 'text/html; x-type=mt3' -s -z /hoge/archives/
とかやればいけるはず。
もっと良いfilterの実装がありましたら、教えてください。
ちなみに、皆さんのBlogにあわせてmt3.plをいじるとしたら、
my $MT3_MESSAGE_FILE = '\d{6}\.html';
で指定しているインデックス作成対象ファイル名の部分と、
    $$contref =~ s/<form method="post".*/</body></html>/s;
$$contref =~ s/<body>.*<div class="blogbody">/<body>/s;
で指定している対象範囲の目印部分だけだと思います。

2 件のコメント:

  1. 新しいpipermail.plでは、Dateも取り出すようになっているな。
    参考にして日付ソートもきちんとできるようにするか。
    ��出来るのはいつになるかな(^^;

    返信削除
  2. BlogのソースHTMLをじっと見ていたんだけど、
    <head>内のrdf:Description部を解析して、
    dc:titleを$fields->{'subject'}に
    dc:subjectを$fields->{'newsgroups'}に
    dc:descriptionを$fields->{'summary'}に
    dc:dateを $fields->{'date'}に
    変換して押し込めばいい感じかな。
    誰か先に実装して(^^;

    返信削除