From: Shin-ichiro HARA Date: 1997-12-02T12:55:58+09:00 Subject: [ruby-list:5501] Re: Mail to HTML 原です。 > > > ・メールの場合、References も In-Reply-To も付けてこない場合がある > > > ので、引用部を抽出して、マッチングをとる。 > > 私の所では Subject が Re: で始まると最も最近の「似ている」Subject > > を持つものに繋げています。 > > スレッドを tree 状に抽出したい場合にはそうはいきませんよね…。 ほとんどのメールに References: がついていて、そうでないものが少数 ある状況では目立たないので適当にやっていましたが、確かに全てのメ ールに References: が無い状況では線形にしかなりまんせんね。 やっぱり、Reference: 部が無い時には同類 Subject のメールの全検索 しかないかな。やってしまおうかなあ。そこまでするかなあ。(^^; > > これをすると2パス以上必要になって、処理に時間がかかるのですよね。 > > 後から追加される記事を処理する際に、それが参照している記事の末尾に > それを加えるという方法を以前の perl 版ではやっていました (というか > MHonArc がそうしていた)。 なるほど。 > 100 件ごとに区切って処理しているので高速です。このとき前後100件を加え > ることで、スレッドが切れにくいようにしています。 なるほど。私のところでは Reference: が付いているとどこまでも遡る仕様 なので時間がかかるんですね。 > > スレッド分けですけど、DBM でデータを取っておいて、必要な部分を > > 判断してそこだけ書き換えるようにしたら、70分かかっていた処理 > > 時間が40秒になってしまった。それにしても DBM は偉大だ。 > > おお、そういう手がありましたか。DBM ってどうやって使うのですか? > 簡単に教えて頂けるとうれしいです。 使い方は簡単で、 require 'dbm' dbm = DBM.open("datafile") dbm["key_string"] = "val_string" ... dbm.close などとしただけで「datafile.ナントカ」という、連想配列を記録した データベースが出来上がるのです。特徴としては、1件あたりの読み だしや変更に対してアクセスが極めて高速であること、出来るファイ ルがデカイこと、「キー」、「値」は String オブジェクトであるこ と、などです。