[PHP-users 10458] Re: field cache [subject] hit!

Youichi Iwakiri php-users@php.gr.jp
Wed, 02 Oct 2002 16:28:10 +0900


いわきりです

Tsukada Takuya wrote in <20021002011930.0271610301C@castle.fminn.nagano.nagano.jp> :
>> インデックスを切り替えて、繰り返し検索を行うと、
>> Apacheのerror.logに 3回目のindexのときに
>>  namazu(debug): field cache [subject] hit!
>>  namazu(debug): field cache [summary] hit!
>>  namazu(debug): field cache [uri] hit!
>> が記録され、nmz_result_field($result,$i,"subject")の返り値が
>> 前回のデータになってしまいます。
>> キャッシュを見ないように設定できないでしょうか。
>状況を完全に把握していないのですが、
>キャッシュというのが、libnmz の nmz_get_field_data()
>の中にあるものだとすると、無効にしたり、消去することは
>出来ないみたいです。
>libnmz は同じプロセスで、異なったインデックスに対する
>複数の検索を処理することを、考慮していないのかもしれません。

ソースをみました。
NMZ.field.{field名}をキャッシュしてます。
こちらは、indexid, docid, field名をキーに登録しています

nmz_close()を呼んでもクリアされていません。

cacheは、関数内でstatic宣言されているのでnmz_free_cache()といった
関数も安易に追加できません。
一番簡単な対処方法は、nmz/field.cからcache処理部分の削除でしょうね。

 diffファイルを http://www.tktools.jp/%7Eiwa/namazu_field.c.patch に
置いておきます。

-- 
Youichi Iwakiri