[PHP-users 10006] field cache [subject] hit!

柴田俊秀 php-users@php.gr.jp
Wed, 11 Sep 2002 18:01:54 +0900


北海道の柴田です。
PHPのNamazu拡張モジュールについて教えてください。

インデックスを切り替えて、繰り返し検索を行うと、
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")の返り値が
前回のデータになってしまいます。
キャッシュを見ないように設定できないでしょうか。

下記、関数を3回呼び出すと、1.2回目はOKで
3回目のデータが2回目のデータと同じ表示(最初のデータ)となる。

1回目 $Item=TOP   該当件数 4件  $count=4  表示OK
2回目 $Item=MAIL  該当件数 2件  $count=2  表示OK
3回目 $Item=TERM  該当件数 1件  $count=1  表示NG(MAILのデータ)
で検索件数はOK
単独で $Item=TERM のみを行うと、正常に表示される。
TERMのデータを2件と増やしても、MAILの2件のデータが表示される。

※ ソース抜粋
function faq_targetSearch($Item){  //$Itemを変えて何回か呼び出す。
    global $GV_NAMAZUINDEX;

    $index = array("$GV_NAMAZUINDEX/$Item");   
    $nmz = nmz_open($index) or die("Couldn't open index.");
    $sort = 'field:{subject}';
    nmz_set_sortmethod($sort);
    $result = nmz_search($nmz,strip_tags($Item)) or die("Query failed.");
    $count = nmz_num_hits($result); //このヒット数はデータと一致している
    if ($count>0){        print("\$Item=$Item<br>");
        for ($i=0;$i<$count;$i++){
            print(nmz_result_field($result,$i,"subject"));  //この値が???
            print("<br>");
        }
    }
}

※ 環境 …どちらも同じ状態になる
・Linux
  apache_1.3.26
  namazu-2.0.10
  php-4.2.2
  php4_namazu-2.1.0
・Windows2000
  apache_2.0.40-win32
  nmz2010
  php-4.2.3-Win32
  php4.2.x-namazu-2.1.0-win
以上