[PHP-dev 197] Re: PHP4_namazu-2.1.0 patch
Youichi Iwakiri
php-dev@php.gr.jp
Tue, 08 Jan 2002 17:45:57 +0900
いわきりです
tsukada@fminn.nagano.nagano.jp wrote in <20020108012152.7017B183AA@castle.fminn.nagano.nagano.jp>:
>でも、どうも分かりにくいので、引数が多いときは、
> nmz_fetch_score(int result, int start, int end)
>または
> nmz_fetch_score(int result, int offset, int limit)
>
>に変更しませんか?
>違いを明確にするなら前者が良いと思いますが、
そうですね。libnmz内のnmz_fetch_*系の関数は前者の形式ですから
wrapperとしてのNamazu拡張モジュールもlibnmzに素直に値を渡す形式が
良いのかもしれません。
特にlibnmzを直接利用してきた人がnamazu拡張モジュールを利用する場合に
問題無く移行できると思います。
#ユーザ数としては多くないと思いますが
>スクリプトを書くときは後者が使いやすいのでしょうか。
こっちは、そうだと*私は*思います。
実際にNamazuを使ったことがある人にとって、namazu-cgi, namazu-cmdの
インタフェースが提供するパラメタで先の開始ポインタと終了ポインタに
相当するものは
CGI版
max 一度に表示する検索結果の件数を指定します。
whence 検索結果を何件目から表示するかを指定します。
Command line options
-n, --max=NUM 一度に表示する件数
-w, --whence=NUM 表示する検索結果の先頭番号
で与えられます。
whence(offset)からmax(limit)数分取得するという形なので
Namazuのエンドユーザがnamazu拡張モジュールを使用する際に
戸惑うかもしれません。
#そこまで考えることもないかもしれませんが :-)
私自身としては、Namazu classを用意して
表面的にはnamazu拡張モジュールの提供する関数を隠蔽して
いるのでnmz_fetch_*関数のインタフェースの修正には
異論はありません。むしろlibnmzの提供するインタフェースに
併せた方が素直に思えます。
あとは利用する側のもんだいですね。
こんな風にscriptは書いてます。
#近々、NamazuClassは公開します
<?php
require_once 'namazu.inc' // Namazu classの読み込み
$query = 'こんにちは';
$nmz_options = array (
'index' => array (
'/hoge/php-users',
'/hoge/php-dev',
'/hoge/php-doc'
),
'whence' => 0,
'max' => 20,
'pagemax' => 20,
'lang' => 'ja'
)
$nmz_status = Namazu::search($query, $nmz_options);
switch ($nmz_status->nhits) {
case -3:
my_sys_error(); // INDEX Open error 処理
break;
case -2:
my_long_query(); // 「queryが長すぎます」を表示
break;
case -1:
my_empty_query(); //「queryが空です」を表示
break;
case 0:
my_nohits(); // 「検索のコツ」を表示
break;
default:
$nmz_result = Namazu::fetch_result($nmz_stasus);
output_function($nmz_result); // 検索結果を整形して表示
break;
}
Namazu::destroy($nmz_status);
?>
以上です。