namazu-ml(avocado)


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

Re: pnamazu-98.04.16



古川です。

>> On Fri, 17 Apr 1998 10:53:42 +0900, Satoru Takabayashi <ccsatoru@xxxxxxxxxxxxxxxxxx> said:
  > これはナイスですね。ちょっと試してみたところではうまく動きました。
  > 仕組みがどうなっているかとかはまだ調べていませんが、 C版の方でも実
  > 現したいところです。

検索クライアントの既存のルーチンで読み込めるように、似た形式になってい
ます。

カタカナの場合、\xa5[\xa1-\xf6] の範囲に入っていますから、これと「ー」
(\xa1\xbc) を合わせても 100 個もありませんから、
    「ー」(a1bc) ... 0
    「ァ」(a5a1) ... 1
    「ア」(a5a2) ... 2
        (以下略)

のように番号を振ります。で、その組み合わせで、

    「ーー」,「ーァ」,「ーア」, …, 「ァー」「アー」 

に対し、NMZ.i に登録されているカタカナ語を記録しておきます。これが NMZ.k 
です。

そして、NMZ.ki には、該当するカタカナ並びが NMZ.k のどこにあるかを記録
しておきます。

検索時には、検索語のカタカナ語を、2 文字単位で登録語を調べています。


  > # 辞書いらずの文の分解機能も真似しようと思っていて思っているだけの
  > # ままになっていました…。

こちらは、基本的には、binsearch で while ループを抜けたら、x の値を
デクリメントしながら、先頭が一致するのを見つけていけばいいはずです。


  > それから、ひとつバグを見つけました。キーワードが見つからないときも
  > |検索結果
  > |参考ヒット数:  [ hoge: 0 ]
  > |検索式にマッチする 1 個の項目が見つかりました。
  > のように一つ結果が表示されてしまいます。これは NMZ.r の最初に登録
  > されているもののようです。

ありがとうございます。さっそく直しました

namazu.pl の sub searchmain の中を

      @ARGV = split(/\s+/, ($ARGV = &searchwords(split(/\s+/, $ARGV))));
      # 演算処理
      %Score = %{&operate(@ARGV)};
+     delete $Score{'Disable'};
  
      # 検索結果のソート
      @Keys = sort {$b <=> $a} keys(%Score);

としてください。
-- 

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