namazu-ml(ring)


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

pnamazu-99.03.02



古川です。

perl 版検索クライアントを、今回は

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

に置きました。

(個人的に、友人との連絡用にデータ置き場を持ったので、ついでに pnamazu
もこちらに置いてみました。)


#       '+': 新規仕様
#       '?': 試験的仕様
#       '-': 仕様の削除
#       '*': 本体以外の仕様
#       '!': 修正
# 99.03.02
#   + 簡易 cache 機能                                               (1)
#   + v1.4 形式に対応 (自動判別)                                    (2)
#   * nmztxt.pl も v1.4 形式に対応 (自動判別)                       (3)
#   * v1.3 形式を v1.4 形式に変換するスクリプト 13to14.pl を添付
#   * HREF の中身を "news:..." の置き換えるスクリプト msgid.pl を添付
#   * 最近 n 日以内に更新したファイルの要約に文字列を付加するスクリプト
#     addnew.pl を添付
#   * kwnmz.pl で、キーワードの評価がおかしかったのを修正

(1)
Namazu のアルゴリズムから言って、データの規模が増加しても、検索時間は
log(N) のオーダでしか増えませんが、フィールド検索と正規表現検索につい
ては、総当たりで検査するため、それぞれ文書数、単語数に比例して時間がか
かります。

これらについて、せめて再検索の際には時間が節約できるように、結果を cache
するようにしています。

対象となるのは、

    フィールド検索 -> ヒットする文書
    正規表現検索 -> 該当する単語

の部分です。よって、通常の単語検索、前方・中間・後方一致検索は、毎回
行なわれます。

また、検索式をまるごと cache するわけではありません。よって、演算処理
(and/or/not/phrase) は毎回行なわれます。

その代わりといってはなんですが、
    /あいう/
で検索した後、
    /あいう/ or アイウ
なんて検索をした場合にも cache は有効です。

cache したデータは、NMZ.cache.* というファイルに記録されますが、インデ
ックスが更新されたことを検知する機能は無いので、インデックスを更新した
ら、cache file を削除しないと、古いインデックスによる cache を信じてし
まいます。

cache のファイルは、pconfig.pl 内の $CacheSizeLimit という変数で制限で
きます。ただし、一度ファイルを作ってから、サイズ超過したら消す、という
順序で処理しているので、一時的には、この値を超えることがあります。


(2)
v1.4 の pack 'w' 形式に対応しました。NMZ.h の有り/無しで判別しているの
で、新しい形式なのに NMZ.h が残ってた、などという場合には誤動作します。

perl 5.003 以前でも、pack 'w' 形式のインデックスが読めます。

複数データベース検索の場合に、v1.3 形式と v1.4 形式が混在しても大丈夫
です。


(3)
v1.3 形式を v1.4 形式に変換するコンバータ、などを添付しました。
すみませんが、あまりテストはしていません。


----------------------------------------------------------------------

「そのうち、最初から書き直して、もっと美しいスクリプトにしよう」という
気持ちもあったのですが…

高林さんが「将来のバージョンは、クライアントも perl で書く」と表明なさ
っていますので、pnamazu の (存在意義という観点での) 寿命は、それほど長
くないことでしょう。すると、現在の pnamazu は、私が個人で使えれば十分、
ということになるので、書き直すのはやめました。

# 書き直すには、既にわけがわからなすぎて、そのわりに、仕様が大きくなり
# すぎている、というのもありますが。

今後もこのまま、わけのわからないスクリプトとして、成長していくことでし
ょう。

-- 

                                        ヤマハ(株)ピアノプレーヤ設計課
                                                              古川 令
                                             furukawa@xxxxxxxxxxxxxxxx