namazu-ml(ring)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
pnamazu-99.03.02
- From: Rei FURUKAWA <furukawa@xxxxxxxxxxxxxxxx>
- Date: Tue, 2 Mar 1999 12:51:26 +0900 (JST)
古川です。
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