namazu-ml(avocado)


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

pnamazu-98.06.17



古川です。

>> On Tue, 16 Jun 1998 17:10:48 +0900, Satoru Takabayashi <ccsatoru@xxxxxxxxxxxxxxxxxx> said:
  > Rei FURUKAWA <furukawa@xxxxxxxxxxxxxxxx> wrote:
  >> # 近々、親戚宅 (名東区) に行きます。
  > 名古屋案内でもしましょうか :-)。

子供を家内 (およびその親戚) に押しつけて、自分は大須の電気街へ、という
夢のような計画を、現在たくらんでいるところです。


久しぶりに、perl 版の検索クライアントを別便にて高林さんに送ります。

#       '+': 新規仕様
#       '?': 試験的仕様
#       '-': 仕様の削除
#       '*': 本体以外の仕様
#       '!': 修正
# 98.06.17
#   * wakati.pl < filename ができなかったのを修正
#   + 村下@池上通信機さんのパッチをもとに、LANGUAGE および veryshort
#     に対応
#   ? 正規表現に対応した。
#       2 バイト文字列はコンバートする
#       NMZ.w があれば、それを使う
#   + フレーズ検索対応

正規表現についてですが、2 バイト文字列については、ちょっと細工をしてい
ます。perl の正規表現では、

        /[ア-オ]/

とやっても、

        /[\xa5\xa2-\xa5\xaa]/

と解釈されてしまうため、これを

        /(\xa5[\xa2-\xaa])/

と変換するような細工をしています。従って、カッコの順番が変わってしまう
ため、\1 のような表現は、使えません。今のところ、{m,n} も使えません。

NMZ.w があれば、そちらを使うようにしています。無い場合、
        2 バイト文字列については NMZ.m & NMZ.mi
        1 バイト文字列については NMZ.s & NMZ.si
が必要です。


2 バイト文字列で NMZ.mi を使う場合、全空間をスキャンするのを防ぐため、
簡単なロジックですが、侯補を絞ってから調べるようにしています。

1 バイト文字列については、しんどかったので、何もしていません。全空間を
スキャンしてしまいます。

これにより、中間 & 後方一致の仕様は削除しようかとも思いましたが、

        内蔵わかち書きとの相性
            正規表現では、/知大/ で '愛知大学' を調べることはできない
            '*知大*' ならば可能 (他に '知大' を含む語がなければですが)

        せっかく作ったのにもったいない

という理由により、しばらくは残すこととします。


フレーズ検索については、

    「演算子の無い検索語の並び (通常は and 演算) は、すぐ外
      のカッコが '{ }' だった場合には、phrase 演算として扱う」

という仕様になっています。

        { 制御 ( システム | system ) }
        { *学部 *学科 }
        { /(バ|ヴァ)イオリン/ 協奏曲 }

といった検索もできます。


また、「愛知大学」を検索すると、{ 愛知 大学 } に展開するようになってい
ます。

-- 

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