[PHP-users 10086] Re: field cache [subject] hit!
柴田俊秀
php-users@php.gr.jp
Fri, 13 Sep 2002 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
> 以上