Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
libnmz interface (Re: my plan)
Satoru Takabayashi <satoru-t@xxxxxxxxxxxxxxxxxx> wrote:
>libnmz のインターフェイスは glib 風に
>
> Namazu *foo = nmz_new();
> nmz_add_index(foo, "/where/foo/index/is");
> nmz_search(foo, query);
> :
> nmz_destroy(foo);
考え直しました。こんな感じでいかがでしょう?
int
main()
{
// 検索結果用のオブジェクト
NmzDocList *result;
// クエリーは単なる文字列
char *query = "foo and bar";
// インデックスの集合を扱うオブジェクトを生成する
NmzIdxSet *foo = nmz_new_idxset();
// 設定ファイルを読み込む
nmz_load_rcfile();
// 検索対象のインデックスを登録する
nmz_idxset_add(foo, "/foo/bar/Namazu/idx1");
nmz_idxset_add(foo, "/foo/bar/Namazu/idx2");
nmz_idxset_add(foo, "/foo/bar/Namazu/idx3");
// 検索結果 (ヒットした文書のリスト) を得る
result = nmz_idxset_search(foo, query1);
// 同じインデックス修業に対して別のクエリーで検索できる
// result2 = nmz_idxset_search(foo, query2);
// 検索結果をソートする
nmz_idxset_sort(result, NMZ_SORT_BY_SCORE);
for (i = 0; i < result->len; i++) {
// 文書のリストから n番目の文書へのポインタを得る
NmzDoc *doc = nmz_doclist_nth_doc(result, i);
// 検索結果表示用の要約を取り出す (NMZ.result に応じて)
char *info = nmz_idxset_get_summary(foo, doc, i);
// HTMLタグを除去する (必要に応じて)
nmz_dehtml(info);
// 検索結果を表示する
printf("%s\n", info);
}
// 後片づけ
// nmz_idxset_destroy(foo);
// nmz_doclist_destroy(result);
return 0;
}