Namazu-users-ja(旧)


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

ISO-2022-JP-2 なメールを mknmz したときの問題



はじめまして。
うえの@ぶるーすかいと申します。

インデックス作成のプロセスにバグを見つけたので、報告します。


先日、namazu-2.0.1 と kakasi-2.3.1 を用いて
6 万通ほどのメールに対して mknmz を実行した後、
確認のために namazu コマンドで明らかに多数含まれている
英単語 (linux, ruby など) を検索してみたところ、
わずか数軒しかヒットしませんでした。

NMZ.w の内容が文字化けしており、どうやらインデックスが
正しく生成されていないようでしたので調べてみたところ、
処理対象のメールのうち、*引用部分に* ISO-2022-JP-2 のコード
(アキュートアクセント付きの a) を含んでいるものがあったのが原因らしく、
コントロールコード (ESC) を含んだままの内容が Text::Kakasi に
渡された後、終了するまでずっと Text::Kakasi が誤動作していたようです。

もちろん、当該メールの前に *本文中に* ISO-2022-JP-2 のコードを
含んでいるものが処理されていましたが、こちらは
インデックスの作成には問題ありませんでした。

使用したバージョンは、

  Linux-2.2.14
  perl-5.005_51
  namazu-2.0.[12]
  kakasi-2.3.1 & Text-Kakasi-1.01.tar.gz
  nkf171.shar

です。


mailnews.pl に対する修正パッチです。

--- namazu-2.0.2/filter/mailnews.pl.orig	Sat Mar 18 21:28:08 2000
+++ namazu-2.0.2/filter/mailnews.pl	Sat Mar 18 21:28:22 2000
@@ -66,6 +66,7 @@
     gfilter::line_adjust_filter($cont);
     gfilter::line_adjust_filter($weighted_str);
     gfilter::white_space_adjust_filter($cont);
+    gfilter::white_space_adjust_filter($weighted_str);
     gfilter::show_filter_debug_info($cont, $weighted_str,
 			   $fields, $headings);
     return undef;


ちなみに、ChaSen では問題ありませんでした。
Perl モジュールでない kakasi だと、当該メールの内では
盛大に文字が化けますが、後の分かち書き処理に
影響を残すことはありませんでした。

また、ドイツ語 (ISO-8859-1) や韓国語 (euc-kr) の SPAM を
LANG=ja な mknmz に食わせてみたりもしましたが、
当然文字化けはするもののインデックスの作成には
特に問題はないようです。

Text::Kakasi 側に漏れたのが ESC (0x1b) だったのが
良くなかったみたいですね。


-=====--===-
   うえの かつひろ @ BLUE-SKYNET    <unnie@xxxxxxxxxxxxxx>  --=
---=----===-                    http://www.blue.sky.or.jp/  -==