Namazu-devel-ja(旧)


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

Re: field search bug?



図書館情報大学の高橋です。

原因として、intの扱える限界によるエラー、
という可能性はないでしょうか。

フィールドサーチをしているところをみると、
re.cのnmz_regex_grep()のなかに、
for(i=n=0; fgets(buf, BUFSIZE-1, fp); i++)
というところがありますが、このiがintで定義されています。

intが16bitだと-32768から+32767の範囲をとります。
ループの最大数(iの最大数)が総ドキュメント数ですので
土屋さんの場合max(i)=111823です。
16bitの場合、32767をインクリメントすると、
-32768になってしまうようです。
iをヒットドキュメントNo.として扱っているみたいなので
これだともう正確ではないですね。
よって、求めるドキュメントNo.が32767を超えると、
ヒットしても、違うドキュメントNo.が返ってきてしまいます。

ちなみにperlでは型がないのでこういったケースはおきません。

といった予測ですがどうでしょうか。

ですので、土屋さんが研究室で使われているPCの
intの扱える範囲をお調べになられたらいかがでしょう。



図書館情報大学4年
 高橋英幸<k176@xxxxxxxxxx>