「メール検索」の編集履歴(バックアップ)一覧に戻る
メール検索 - (2008/06/28 (土) 12:57:04) のソース
&topicpath(top=トップ) #contents(fromhere=true) **インデックス作成バッチファイル(Hyper Estraier) mkindex.batとでも名前を付けてaccountsフォルダーに保存。 >cd /d %0\.. >for /d %%A in (*) do ( >cd "%CD%\%%A" >estcmd gather -cl -fm -cm -sd ".\index" ".\msg" >) estcmdの部分を下記に変えるとそれぞれ estcmd purge -cl ".\index" (削除メールのインデックス削除) estcmd optimize ".\index" (インデックスの最適化) ができるので、別のバッチファイルとしてそれぞれ保存すればいい。 どれもaccounts以下のすべてのアカウントに対して行います。 **Hyper Estraierのインデックス作成の高速化 すでにインデックス化されたメールを無視して新規のメールのみインデックス化させる方法です。 1) Qmail3のオプション-検索をカスタムにして、更新のところを下記に変更。 >cscript qm_gather.js "$index" "$msg" 2)下記をqm_gather.jsとしてqmail3と同じフォルダに保存 >var ARGV, index,msg; >var WshShell = new ActiveXObject('WScript.Shell'); >ARGV = WScript.Arguments; >index = ARGV(0); >msg = ARGV(1); >var objExec = WshShell.Run('cmd /C cscript //B >find.js "' + msg + '" | estcmd gather -cl -fm ->cm -sd "' + index + '" -', 10, true); >var objExec = WshShell.Run('cmd /C estcmd >create -attr from seq -attr to seq -attr cc >seq -attr subject seq -attr @cdate seq "' + index + '"',10,true); 3)accountsフォルダとqmail本体のあるフォルダにfind.jsという名前で次行以下を保存。 >var ARGV, index,msg; >var WshShell = new ActiveXObject('WScript.Shell'); >var fso = new ActiveXObject("Scripting.FileSystemObject"); >ARGV = WScript.Arguments; >msg = ARGV(0); > >msg = msg.replace("\\","\\\\"); >var fldr, fs, fc, f; >fldr = fso.GetFolder(msg); >fs = new Enumerator(fldr.SubFolders); >for (;!fs.atEnd(); fs.moveNext()){ >fc = new Enumerator(fs.item().files); >for (; !fc.atEnd(); fc.moveNext()){ >f = fc.item(); >if(f.attributes && 32){ >f.attributes = f.attributes - 32; >WScript.StdOut.WriteLine(f); >} >} >} <注意> 必要なときに全文検索窓の「インデックスの更新」を押せば、インデックス化されていないメールのみをインデックス化するので早くなります。 ただし、アーカイブ属性の確認を毎回行うので、この部分をもっとうまく処理すれば更なる高速化が可能です。 さらに、これに対応する全アカウントに対する新規メールインデックス化を行うためのバッチは下記のとおり。 mkindex.batとでもして次行以下をaccountsフォルダに保存 >cd /d %0\.. >for /d %%A in (*) do ( >cd "%CD%\%%A" >cscript //B ..\find.js ".\msg" | estcmd gather -cl -fm -cm -sd ".\index" - >estcmd create -attr from seq -attr to seq ->attr cc seq -attr subject seq -attr @cdate seq -attr message-id seq ".\index" >) おいらはタスクスケジューラでアイドル時にこれを実行させてます。 estcmd createの行は、属性検索を使わなければ不要です。