NamazuからHyper Estraierに移行。検索自体は数万通くらいなら1秒も掛からなくて、そこから合致したメールの一覧を並べる処理でその後何秒掛かるかが決まるみたい。家の環境でest searchした感じメール1万通の中から6000通HITする検索をした場合、0.03秒で検索自体は終わる。Muttと連携する場合はヒットしたファイルのシンボリックリンクをどこかに作り、Muttからそこを開く必要がある。Hyper Estraierの_lpathに記録されるURIは一部シェルが認識できない文字列に変換したり、頭にfile:://とかがつく。そこでest searchで抜いたidを更にest getに掛けて_lrealのURIを取得する。
#インデックス作成
#!/bin/sh
MAIL_INDEX="$HOME/Mail/index"
MAIL_SPOOL="$HOME/Mail/spool/main"
find ${MAIL_SPOOL} -amin -1440 -type f
|estcmd gather -fm -il ja -bc -lt -1 -lf -1 -apn -xs -si -sd -cm -cs 256 ${MAIL_INDEX} -
estcmd purge -cl ${MAIL_INDEX}
# estcmd extkeys -um ${MAIL_INDEX}
#!/bin/sh
MAIL_INDEX="$HOME/Mail/index"
MAIL_RRESULT="$HOME/Mail/spool/mslt/cur"
rm -f ${MAIL_RRESULT}/* 2>/dev/null
echo "Search word:"
read SEARCH_WORD
for id in `estcmd search -vu -nl -gs -cd -ni -max -1 -aux 0 ${MAIL_INDEX} ${SEARCH_WORD} cut -f1`
do
ln -s `estcmd get ${MAIL_INDEX} ${id} _lreal` ${MAIL_RRESULT} 2>/dev/null
done
#muttrc。マクロで検索スクリプトを呼ぶ。自動で検索結果ボックスを開く。 macro index cf "!$HOME/Project/sh/est/estmail.shr=msltr" macro pager cf "!$HOME/Project/sh/est/estmail.shr=msltr" macro browser cf "!$HOME/Project/sh/est/estmail.shr"
//
検索結果が多くなるとforで回すのは時間がかかるみたい。estcmd getするのは止して、estcmd search -vuで得られるURIをsed awk cutで頑張った方が早い。検索結果はただのリンクだから検索結果にフラグとかマークつけても意味がないとか、そこらの不満はどう解消すれば。
//
Muttはフラグとかつけるとファイル名の後ろの部分変わるから、estcmd search -vuのURIを取得、sedとかで必要な箇所だけ抜き取ってフラグの箇所はとりあえず*にする。汚い。
//
追記。上記の記事を書いた後にMH形式に移行してて、Muttで重要フラグつけたものの検索用。
#!/bin/sh
RRESULT="$HOME/Mail/spool/mslt"
rm -f ${RRESULT}/* 2>/dev/null
for i in `grep 'flagged:' $HOME/Mail/spool/main/.mh_sequences |cut -f2- -d' '`
do
ln -s $HOME/Mail/spool/main/$i ${RRESULT}/
done