Namazu-devel-ja(旧)


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

Re: 検索の and 条件?



竹迫です。

"Hideyuki SHIRAI (白井秀行)" <shirai@xxxxxxxxxxxxxxxxxxx> wrote:
> 藤原さんの日記や semi-gnus ML のメールを読んで実験していたのです
> が、ふにおちない挙動を発見したので報告します。

ご報告どうもありがとうございます。

> この時、(1) では、
> 
> 参考ヒット数: [ +uri:/home/shirai/Mail/ml/freebsd: 0 ]  [ thread: 457 ]
> 
> なので、Mew-dist が表示されるのはおかしいし、(2) では
> 
> 参考ヒット数:  [ nantarakantara: 0 ]  [ namazu: 2536 ] 
> 
> なので、何も表示されないのが、ぼくの期待している動作なのですが、
> ぼくの認識が間違っているのでしょうか。

こちらでも試した結果、確かに同じような現象が確認されました。

(1) namazu-2.0.7pre1 での検索結果
    参考ヒット数: 
    Central: [ hp: 1598 ] [ compaq: 92  ] [ gateway2000: 0 ] [ 合計: 81 ] 
    NOTES:   [ hp: 475  ] [ compaq: 27  ] [ gateway2000: 0 ] [ 合計: 27 ] 
    H-SVR:   [ hp: 1060 ] [ compaq: 166 ] [ gateway2000: 2 ] [ 合計: 2  ] 
    検索式にマッチする 110 個の文書が見つかりました。

どうやら、参考ヒット数に 0 が含まれる場合の処理が、期待通りでないようです。

> もし、バグなら、
> X-Mail-Count: 01287
> からはじまる thread でエンバグしたのだと思われます。

見てみました。仰るとおり、このタイミングから namazu の and 検索の
挙動が変わっているようでした。

早速、nmz/hlist.c に以下の修正を加えたところ、

--- hlist.c.orig Sun Sep  2 16:13:37 2001
+++ hlist.c Fri Sep  7 11:22:41 2001
@@ -256,12 +249,12 @@
     }
 
     if (left.stat != SUCCESS || left.num <= 0) {
- nmz_free_hlist(left);
- return right;
-    }
-    if (right.stat != SUCCESS || right.num <= 0) {
  nmz_free_hlist(right);
  return left;
+    }
+    if (right.stat != SUCCESS || right.num <= 0) {
+ nmz_free_hlist(left);
+ return right;
     }
 
     for (v = 0, i = 0, j = 0; i < left.num; i++) {


下記のような検索結果となり、
and 条件の検索としては期待通りの結果となりました。

(2) namazu-2.0.7pre1 に上記パッチをあてた場合の検索結果
    参考ヒット数: 
    Central: [ hp: 1598 ] [ compaq: 92  ] [ gateway2000: 0 ] [ 合計: 0 ] 
    NOTES:   [ hp: 475 ]  [ compaq: 27  ] [ gateway2000: 0 ] [ 合計: 0 ] 
    H-SVR:   [ hp: 1060 ] [ compaq: 166 ] [ gateway2000: 2 ] [ 合計: 2 ] 
    検索式にマッチする 2 個の文書が見つかりました。

ただし、ここで検討すべき内容ですが、

(2) の挙動は and 条件での検索としては論理的に正しい結果である。
しかし (1) では、and 条件で検索した場合、検索結果が 0 の項目は
除外され、できるだけ多くの検索結果を表示しようと努力する。
検索結果が 0 の項目を除外して、ユーザが再検索する必要がないので、
ユーザビリティの観点からは望ましい挙動ともいえる。

という点です。

ご指摘のとおり、(1) の動作では違和感を感じられる方がいるという
点でも問題があると思います。

個人的には、混乱を避けるためにも、従来の Namazu の挙動に戻す
(2) のパッチをあてた方がよいのかな?と思っています。

よろしければ、みなさんのご意見をお聞かせください。

--
  広島市立大学 情報科学部 情報機械システム工学科 知能ロボット講座
     竹迫 良範 <takesako@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>