[Mew-dist 08070] Re: namazu.el for mew

Takeshi ITOH titou at example.com
1999年 3月 14日 (日) 03:06:18 JST


伊藤@Bitsです。

>>>>> Hideyuki == Hideyuki SHIRAI (白井秀行) <shirai at example.com> さんは
>>>>> "[Mew-dist 08033] Re: namazu.el for mew" の中で書きました。
> ### 呼ばれてしまいました。^^;;;
同じく。

以下まとまりがないですがとりあえず namazu を使っている状況など。

■ namazu を入れるためのディスク容量など
  アプリケーション(辞書含む)
     kakashi 3MB(chasen の場合 8MB)
     namazu  1MB

  ~/Mail以下
    フォルダの数 59
    176MB
        内 NMZ関連のファイル 52MB

現在 12410個のファイルが全文検索の対象になっています。それなりにディ
スクは必要としますが、それだけの価値ありです。


■ 検索の速度

12410個のファイルから検索した例。1661件にヒットしています。3回目以降は
0.7〜0.9秒程度になります。ということで十分速いです。
(Pentium 120MHz, 32MB,linux-2.2.3です)

$ time namazu -n 9999 -S 伊藤 Mail \\| wc
0.25user 0.62system 0:06.88elapsed 12%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (741major+39minor)pagefaults 0swaps
   1661    1661   47132

~$ time namazu -n 9999 -S 伊藤 Mail \\| wc
0.24user 0.36system 0:01.55elapsed 38%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (123major+39minor)pagefaults 0swaps
   1661    1661   47132


■ Namazu のインストール

みなさんインストールしましょう。
   http://www.ring.gr.jp/openlab/namazu/index-j.html


■ DBの設置場所

(1)Mail以下のフォルダをまとめて一つのDBで管理する。
  - namazuの DBを ~/Mailに置く。
  - 特定のフォルダのみを検索したい場合namazu には検索結果をフォル
    ダで絞り込むオプションは無いので mew 側でfiler する必要がある。
  - DBとフォルダの対応がとれなくなったらDBをつくり直しになる。これ
    は結構時間がかかる。
  - とりあえず DB の場所は決め打ちできる。

(2)フォルダ毎にDBを作る
  - 各フォルダに DB を作る。
  - namazu は複数 DB に対応しているのでフォルダ指定の検索も簡単。
  - DBの一覧は C-u Z のときに作る?
  - DBの更新が面倒になる?
  
(3)期間毎に DB を持つというもあり?

私は(1)のやり方でやってます。mew にはとりあえず(1)で将来的には 
(1),(2)両方サポートして欲しいです。


■DBの作成、更新の方法

たた単に mknmz -a -h ~/Mail しても良いのですが、 .mew-cache や 
postmaster 宛てなど検索から外したいフォルダを指定するために find 
で対象ファイルを列挙しています。外からは pop3 でしかメールを取って
いないのでこの間のロックなどは考えていません。

    #!/bin/sh
    PATH=/usr/local/namazu/bin:$PATH
    cd ~/Mail
    mv targetfiles oldtarget || touch -t 010100001960 oldtarget
    find . \( -type f \! -newer oldtarget \) -prune \
	 -o -path '*/.??*' -prune \
	 -o -path './*-request' -prune \
	 -o -path './trash/*' -prune \
	 -o -path './from/tito/*' -prune \
	 -o -path './news/*' -prune \
	 -o -path './draft/*' -prune \
	 -o -path './*~' -prune \
	 -o -path './*#' -prune \
	 -o -path './NMZ*' -prune \
	 -o -path './postmaster1/*' -prune \
	 -o -type f -print > targetfiles
    mknmz -h -u -P -U -F targetfiles

更新は手動で気が向いたときにやってます。また更新にはインデックスの
大きさ以上の空容量が必要です。

インデックスの作成には時間がかかるので最初は試しに適当なフォルダだ
けのインデックスを作って試してみたほうが良いでしょう。cd ~/Mail;
mknmz -a -h ~/Mail/inboxなどとしてみて下さい。


■検索してみる

コマンドラインから 
  $ namazu 検索文字列 ~/Mail
すれば使えます。


■emacs から namazu を使う

namazu の contrib の下に namazu.el がありますからそれを使ってみま
しょう。namazu.el を load-path の通ったところに置いて .emacs に次
のような記述を加えます。

;
; namazu.el
;
(autoload 'namazu "namazu" nil t) 
(setq namazu-default-dir "~/Mail)
(setq namazu-search-num 100)

M-x namazu すると Enter Keyword: と検索条件を聞かれるので条件を入
力する。結果は次の様に表示されます。

    検索結果

    参考ヒット数:  [ mew-dist: 1536 ]  [ titou: 1579 ] 

    検索式にマッチする 20 個の文書が見つかりました。

    1. Re: [Mew-dist 05649] Re: [1.93b48+patch1] mew-summary-reply-with-citation: read-only property (score: 103)
       From: Takeshi Itoh <titou at example.com>
       Date: Mon, 27 Jul 1998 00:07:22 +0900
	     確認しました。b49 で空の本文、CoverPageのみの attachments を 
	    C-c C-m しても正常に メッセージが作られました。(body が改行1個)。 
	    また Subject: [Mew-dist 05639] で言った read-only な改行がメッ
	    セージの途
    /home/tito/Mail/Backup/686 size (1,472 bytes)

    2. Re: [Mew-dist 04920] Re: encoded-word within quoted-string (score: 103)
       From: Takeshi Itoh <titou at example.com>
       Date: Thu, 28 May 1998 16:17:11 +0900
	     私は [Mew-dist 04732] の Mito さんのパッチを逆当てして使って
	    ます。 ゴメンナサイ。 (株)ビッツ マイコン開発部ファーム課 伊藤 
	    剛 titou at example.com
    /home/tito/Mail/Backup/570 size (1,086 bytes)

'n','p' でメッセージを選んで RET でそのファイルが表示できます。


■mew との連携

(やっと mew の話しです)
namazu.el では単にテキストファイルとして読めるだけなので mew で読
めればMIME をデコードしたり、いらないヘッダを隠したり、ハイライト
したりと嬉しいです。以下に改造版を置いてあります。
http://plaza6.mbn.or.jp/%7etito/emacs/namazu.el

一方 mew はメッセージの選択方法として '?' や 'V' コマンドでパター
ンを指定することがですがこれの拡張として namazu が使えればとっても
便利だと思います。

> 1. imgrep の変わりに namazu を使うコマンド。summary に "*" mark
>  をつける。
 
> 2. ~/Mail 以下(folder の指定も可能)を全文検索する。出力は、
>  (現状の様に)namazu.el で扱っても良いし、virtual folder にしても
>  良い。どちらかというと、virtual folder が好みかな。

> 3. ともに、namazu を elisp から直接動かして、出力バッファで
>  re-search-forward と looking-at で対処。

> と出来たらいいんじゃないかな、と考えています。伊藤さん、どう思わ
 れますか?

はい。できたらとっても嬉しいです。やってみましたと言えないのがつら
いところです。
# [Mew-dist 07503] のパッチでユーザ会でデモすれば良かった。


■条件の入力方法

条件の入力方法はいくつか考えられます。

(1)pick pattren で空の条件を入力すると(RETだけで応答) namazu 検索
   モードになり namazu の検索式を聞く。
(2)フィールド指定の拡張で namazu=何々 が使えるようにする。&や | と
   の整合がとれない?

(1)の方が作るの簡単?でお薦めです。


■困りごと

- インデックス作成後に'S'などすると、インデックスとフォルダの対
  応がとれなくなる。(mew2に期待)
    メッセージの数が多いときは S するときに y/n を聞いて欲しい?


■その他

- namazu は検索をインデックスに対して行なう。
  namazuはmessage-idとファイル名の対応が一応とれるようになっている
  のでmew から利用する際には 1メール/ファイルの形式で保存されている
  必要がないようにも出来るはず。


kazu> 3 月中に安定して動けば、1.94 にマージします。

> う〜〜ん、しかし、今、年度末だからなぁ……

期待してます。x x)\バキッ

-- 
(株)ビッツ マイコン開発部ファーム課
伊藤 剛 titou at example.com



Mew-dist メーリングリストの案内