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>