Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 日付順ソートに関して



白井です。

# パッチを見ただけのコメントだし、それ以前に、最近 namazu のこと
# が全然わかっていないので、勘違いしているかも。

From: Tadamasa Teranishi <yw3t-trns@xxxxxxxxxxxxxxx> さん曰く
Subject: [namazu-devel-ja] 日付順ソートに関して
Message-ID: <3EEC4AC8.3F5F1770@xxxxxxxxxxxxxxx>
Date: Sun, 15 Jun 2003 19:30:32 +0900

> ・mailnews.pl を修正し、mhonarc.pl 同様 ヘッダの Date 情報を
>   フィールド date に反映するようにしました。

"フィールド date" って、NMZ.field.date, NMZ.field.date.i のこと
でしょうか?現状でも、$conf::SEARCH_FIELD に "date" が含まれてい
たら(デフォルトでは含まれている)、初めから mailnews.pl ってそう
なっていませんか?

# すでにこの時点で寺西さんの意図をぼくが勘違いしている可能性高し ^^;;;

> 忘れの場合、結果で表示される日付と、ソートにもちいる日付が異な
> るため利用者の期待した結果にはソートされません。

『日付のソートを厳密にする』を目的にされるのでしたら、

> ・注意) timezone は考慮していません。timezone の異なるファイルが
>  混在した場合は正しく処理できません。

是非是非 timezone も見てくださいませ。+hhmm, -hhmm の表記法以外
は、RFC822 にのっている、

("UT"  .  0),  ("GMT" .  0), ("EST" . -5),  ("EDT" . -4), 
("CST" . -6),  ("CDT" . -5), ("MST" . -7),  ("MDT" . -6),
("PST" . -8),  ("PDT" . -7)

だけサポートすれば大丈夫だし、個人的には、timezone を見ない
Date: のソートなら、ファイルのタイムスタンプを使う方がマシ、と感
じられます。

> + static time_t get_time_from_rfc822time(const char *str_time)
> + {
> +     int i;
> +     int mday, mon, year, hour, minute, sec;
> +     char str_mon[64];
> +     struct tm time; 
> + 
> +     sscanf(str_time, "%*3s, %d %s %d %d:%d:%d",
> +         &mday, str_mon, &year, &hour, &minute, &sec);

ですが、RFC2822 の Date: は

orig-date       =       "Date:" date-time CRLF
date-time       =       [ day-of-week "," ] date FWS time [CFWS]
                        ~~~~~~~~~~~~~~~~~~~

time            =       time-of-day FWS zone
time-of-day     =       hour ":" minute [ ":" second ]
                                        ~~~~~~~~~~~~~~
です。day-of-week や ":second" がないと、return が -1 になっちゃ
うような気がしますが、sscanf の挙動が良くわからないので、"%*3s,
" がどうなるのかわかりません。

> NMZ.t の中身自体を変更しようかと思いましたが、インデックスファイル
> の更新処理に影響がでるので、これはやめました。
> 
> このため、現在の --sort=date よりは、処理が増える分、速度が落ちる
> かもしれません。(それほど気にすることはないと思いますが。)

それは良いんじゃないかなぁと思います。

-- 
白井秀行 (mailto:shirai@xxxxxxxxxxxxxxxxxxx)