Namazu-users-ja(旧)


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

「文書の一部を検索対象から外す」パッチで不具合



 山村です。

 ML1069あたりのスレッドにある、「文書の一部を検索対象から外す」
パッチを最近まで重宝させていただいていました。

http://www.namazu.org/ml/namazu-users-ja/msg01068.html

 わたしの所属する会社は、企業さんのオフィシャルページを請け
負わせてもらうことが多いので、大量にひっかかるナビゲーション
を消すことのできるこの手法は非常に実践的なのです。

 さて、今回Namazuをバージョン2.0.12に上げたのですが、この
機能の挙動が突然怪しくなりました。
 藤原さんに紹介していただいているパッチを、再度転載させて
いただきます。

〆----------------------------------------------------
--- .mknmzrc
sub pre_filter {
    my($contref) = shift;
    $$contref   =~ s/<!--X-Namazu-Ignore-Begin-->.*<!--X-Namazu-Ignore-End-->//gs;
}
1;

--- /usr/local/bin/mknmz	Wed Oct 18 13:27:08 2000
+++ ./mknmz	Tue Nov 21 13:47:46 2000
@@ -727,6 +727,10 @@
     $$contref = util::readfile($cfile);
 #    $file_size = length($$contref);
 
+    if ( defined(conf::pre_filter())) {
+	conf::pre_filter(\$$contref) ;
+      };
+
     # Filtering process.
     my $mtype;
     my $called_dt = 0;
----------------------------------------------------〆

 上の改造を施したmknmzを2.0.12で起動すると、まずLinux版は

93/214 - /home/dir/somefile.html [text/html]
Use of uninitialized value in substitution (s///) at /home/dir/.mknmzrc line 214
, <GEN3> line 94.

 このようなエラーを連発します。

 さらにWindows版で同じことをすると、こちらのほうが問題は深刻
なのですが、mknmz時に半分ハングアップしているのではないかと
思えるぐらい時間がかかってしまいます。午前1時にmknmzを開始
して、午後12時近くになるまでCPU100%状態を保ち続けるらしい、
のです(らしいというのは、まだわたしが直接実機を見る機会を作れ
ていないためです)。

 2.0.10までは、このような症状は見られませんでした。
 2.0.11は試していません。

 未だに正式版に取り込まれていないパッチですので、当てて不具
合が出てもしょうがない話かとは思うのですが、もはやこのパッチなし
にはNamazuが使えないぐらい、一部消しに依存してしまっています。
 エラーメッセージを元にハックしようかとも思ったのですが、Use of
uninitialized valueなどと言われても、置換演算子の中に変数は見当
たらず…

 どんな些細でも結構ですので、解決の糸口をお持ちの方はいらっ
しゃいませんか? 直接の解決法、ハックのためのポインタ、なんでも
結構です。


----------
山村光弘 m.yamaura@xxxxxxx