[PHP-users 10086] Re: field cache [subject] hit!
 
 柴田俊秀
  
 php-users@php.gr.jp
 
 2002年9月13日 14:10:04 +0900
 
 
 
 北海道の柴田です。
 PHPのNamazu拡張モジュールについて教えてください。
下記のソースをいろいろいじったら直ったのですが、
こればバグでしょうか。
※(注記) 行ったこと(ただし、検索キーと格納デレクトリは同じ名称)
 1.faq_targetSearch()の引数にoldItemを追加
  ... 結果 OK になった
 前の検索キーを最初に追加
  (nmz_openの『今のところ同時に開けるイン
  デックス群は1つだけです。』を参考に無視
  されることを期待)
 $index = array("$GV_NAMAZUINDEX/$oldItem","$GV_NAMAZUINDEX/$Item");
 2.$indexの第1引数に最初のキーを固定的に指定
  ... 結果 NG になった
 $index = array("$GV_NAMAZUINDEX/TOP","$GV_NAMAZUINDEX/$Item");
 3.$indexの第1引数にNULLを固定的に指定
  ... 結果 NG になった
 $index = array("","$GV_NAMAZUINDEX/$Item");
 ----該当データの無いキーを指定してもNGです。
 4.$indexの第1引数に2回目以降のItemを固定的に指定
  ... 結果 OK になった
 5.$indexの第1引数と第2引数を入れ替えて指定
  ... 結果 NG になった
 
 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>");
> }
> }
 nmz_free_result($result); // 検索結果保持用リソースを解放
 nmz_close($nmz); // Namazuハンドラを閉じる
> }
> ※(注記) 環境 ...どちらも同じ状態になる
> ・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
> 以上