Namazu-users-ja(旧)


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

pnamazu-2001.06.26



古川です。

perl 版検索プログラムを

http://www01.tcp-ip.or.jp/~furukawa/pnamazu/

に置きました。

#(1) + (ちょっとだけ) wrapper をやりやすくした
#(2) + カタカナフレーズモード
#(3) + ソートして順位が 1 位になった URI に直接飛べるようにした
#    + (遅ればせながら) tfidf に対応
#(4) + sort パラメータに fstat:NAME と書くと NMZ.fstat.NAME という
#      ファイルを読むようにした
#    + 出力フォーマットに #include と書けるようにした

(1)
pnamazu は本当に申し訳ないほど汚いスパゲッティ・スクリプト
なため、何か変更しようと思ったら、改造するよりも、wrapper
を書いて出力を加工するほうが現実的です。ですが、その wrapper
を perl で書くと、毎回 perl を 2 つ起動してしまうことが気
になっていました。そこで、&print というサブルーチンを定義
した上で pnamazu を require したら、出力する代わりに、そち
らのサブルーチンに出力文字列を渡すようにしました。

つまり、今までは、wrapper を書くには、
    open(FH, "pnamazu.cgi|");
    while (<FH>){
        加工;
        print;
    }
でしたが、これを
    sub print{
        加工
        print;
    }
    require "pnamazu.cgi";

と書けるようになります。でも、pnamazu の汚さに変わりはあり
ませんので、変数名の衝突の可能性は常にあります。御注意くだ
さい。


(2)
例えば「スパゲッティ・スクリプト」で検索した際に、内部的に

    { スパゲッティ ・ スクリプト }
    or { スパゲッティ スクリプト }
    or スパゲッティスクリプト

と等価な検索をします。

本当は、
    「スパゲッティスクリプト」で検索したら
    それを分割して扱う
ようにできるとよいのですが、それをやると、分割の組合せを
試す負荷が大きくなるので、やめました。

カタカナフレーズモードは、デフォルトで on です。これをオフ
にするには、パラメータに kp=off というのを入れてください。


(3)
"submit" という名前のパラメータの value のどこかに "jump"
と書いておくと、第 1 位の URL にジャンプするための Location
ヘッダを返します。


(4)
NMZ.fstat.hogehoge として、整数を pack 'N' で並べた (つまり、
NMZ.t と同じ形式の) ファイルをソートに使えるようにしました。

普通に namazu を使っている分には、役立つことはないと思います。

自作ツールなどで、数字の NMZ.field.* を作っていたかたは、
こちらで代替できます。NMZ.field.*.i を作らなくてもよくなり
ます。

-- 
Rei FURUKAWA 
furukawa@xxxxxxxxxxxx