namazu-ml(avocado)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
pnamazu.cgi-98.10.01
- From: Rei FURUKAWA <furukawa@xxxxxxxxxxxxxxxx>
- Date: Thu, 1 Oct 1998 12:36:36 +0900
- X-ml-name: namazu
- X-mail-count: 01260
古川です。
>> On Tue, 29 Sep 1998 22:35:01 +0900, mithara <mithara@xxxxxxxxxxxxxxxx> said:
> 1.namazu 1.2.0.8-beta-6 for win32 パッケージで、日本語ディレクトリ内
> の1140ファイル(ほとんど日本語ファイル名)についてインデックス化、
> namazu perl版(8月31日版)で検索してみました。
perl 版をお使いいただき、光栄に思っております。今回の、一連の話題では、
全くお役に立てませんで、申しわけありませんでしたが、今後とも、どうぞ
よろしくお願い致します。
perl 版検索クライアントを、別便にて高林さんに送ります。
# '+': 新規仕様
# '?': 試験的仕様
# '-': 仕様の削除
# '*': 本体以外の仕様
# '!': 修正
# 98.10.01
# + field 検索に対応 [*1]
# * データベースファイルを、テキストファイルと相互変換する
# サブルーチン群 nmztxt.pl を作った [*2]
# * nmztxt.pl を使ったサンプルとして、データベースのゴミ掃除をする
# スクリプト gcnmz.pl を添付 (v1.3.* 以降用)
# + 正規表現の変換処理を、かなりマシにした [*3]
# - 正規表現検索に NMZ.(m|s)i? を使うのをやめた
# + NMZ.w が無くても、正規表現/後方/中間一致検索ができるようになった
# (NMZ.i, NMZ.ii を使う -> ただし、遅い)
# ! 環境変数 NAMAZUCONF & NAMAZUCONFPATH を読んでいなかったのを修正
# + POST Method でも検索できるようにした
# ! 初期状態でリモートアクセスを無効にしたつもりが、なっていなかった。
# ($RemoteEnable という変数は用意していたが、用意しただけだった)
# - kakasi を呼ぶのをやめた (常に内蔵のわかち書きを使う)
[*1]
field 検索のときに、score が -1 になるのは、バグではなくて仕様です。
[*2]
データベースはバイナリファイルなので、下手にいじると、位置が変わって、
おかしなことになります。
よって、ユーザがデータベースを加工したいと思っても、簡単にはできません。
それで、高林さんが、clnmz のようなツールを作っているわけですが、いろいろ
なユーザの多様な要望に、高林さん一人で応えるわけにはいきませんし、もしや
るとしても、いちいち専用のツールを作っていると大変です。ここで、
(1) まずテキストに変換して
(2) それを加工して
(3) データベースを構築し直す
という手順を踏むことにして、(1) と (3) が用意されていれば、(2) は、利用
者が勝手に作ることができるようになります。
そこで、データベースをテキストと双方向変換するサブルーチン群 nmztxt.pl
というものを作ってみました。用意しているのは、
(1) ファイル系データベースとテキストの双方向変換
NMZ.r, NMZ.f, NMZ.fi <-> テキスト
(2) 単語系データベースとテキストの双方向変換
NMZ.i, NMZ.ii -> テキスト
テキスト -> NMZ.h, NMZ.i, NMZ.ii, NMZ.w
(3) フレーズデータベースとテキストの双方向変換
NMZ.p, NMZ.pi <-> テキスト
(4) 加工結果のファイル数、単語数を NMZ.head* に反映
(5) NMZ.t から、無効なデータのリストを取り出す
などです。
また、これを使ったサンプルとして、v1.3.0 で導入された、インデックスの削
除/更新による、無効なデータのゴミ掃除をするスクリプト gcnmz.pl というも
のを作ってみました。
本当は、データベースを読みながら処理をして、その場で書き出した方が速い
のですが、速度よりも、汎用性を考えて、いったんテキストに落とすようにな
っています。速度と汎用性を両立できる、もう少しいい方法があれば、考えた
いと思います。
<注意> これを使ってみよう、という奇特な方へ!
まだ作ったばかりで、実績が十分とは言えませんし、バグがあると、
データベースが壊れかねない、危険な処理ですから、バックアップを
とってから使うことをお勧めします。
(いちおう、nmztxt.pl でも '.BAK' で元のを残すようにはしてあります)
また、この他に、あると嬉しい機能などありましたら、お知らせ下さい。
[*3]
jperl でない正規表現を使って日本語の正規表現検索をするのにあたり、今ま
では
/[ア-オ]/
のようなパターンを
/(\xa5[\x22-\x2a])/
に変換し、検索対象の文字列は、
s/([\xa1-\xfe])(.)/$1 . chr(0x7f & ord $2)/ge
とやってから検索する、という処理をしてきましたが、これだと、2 バイト文
字と 1 バイト文字が混在したものには使えませんでしたので、フィールド検索
で正規表現を使えるようにするのにあたり、この変換処理を見直し、パターン
を
/(\xff\xa5[\xa2\xaa])/
のように変換し、検索対象の文字列は
s/[\xa1-\xfe]./\xff$&/g
とやってから検索するようにしました。
相変わらず、$1, $2, ... や \1, \2, ... は使えませんが、他のシーケンス
は使えます (たぶん)。また、
\H ひらがな
\K カタカナ
\J 漢字
というシーケンスを (必要かどうかは不明ですが) 使えるようにしてみました。
--
ヤマハ(株)ピアノプレーヤ設計課
古川 令
furukawa@xxxxxxxxxxxxxxxx