Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: PDF ファイルをページごとに分割
>はイマイチなので、早いところファイル入出力を抽象化してこういった要求に
>も柔軟に対応できるようにしたいところです。2.1 matter ですかね。
こんな感じですか?(まだ甘い?)
既存のインデックスを開いてファイルをひとつだけ追加して
インデックスと閉じる
(PDFファイルなど追加ページが複数になる可能性も当然あり)
namazuIndex *index = NULL;
namazuEntry *new_entry = NULL;
GList *entry_list = NULL;
GList *li = NULL;/* イテレータ */
gchar *doc_uri = "~/hoge.txt";
gchar *index_uri = "/usr/var/index";
index = namazu_index_open(index_uri);
filter_func = resource_mmagic(doc_uri);
/*リソースの内容を調べてフィルタ関数を選択*/
new_entry_list = filter_func(doc_uri);
/*
filter_funcでページ分割,テキストの正規化
(インデックスのターゲット文字コードへの変換等),
重みづけ処理、フィールド解析
必要に応じてresource_mmagic,filter_funcも再起的に実行
retrun は GListへのポインタ(namazuEntryのリスト)
*/
for(li = entry_list; li != null;li = li->next){
namazu_index_add_entry(index,li->data)
}
g_list_foreach(entry_list,(GFunc)namazu_entry_list_free,NULL);
g_list_free(entry_list);
namazu_index_close(index);
データ構造
struct namazuEntry{
GList *field; /*namazuEntryFieldのリスト*/
GList *body_order; /*namazuEntryBodyのリスト*/
GList *body_noorder; /*namazuEntryBodyのリスト*/
gchar *uri;
gchar *source_uri;
/* 例えば
uri = "http://www.namazu.org/intex.html#mige"
source_uri = "http://www.namazu.org/intex.html",
とか
uri = "/home/hoge/hoge.pdf#page=10"
source_uri = "/home/hoge/hoge.pdf",
*/
};
struct namazuEntryField{
gchar *name;
GList *value_list;
};
struct namazuEntryBody{
gchar *word;
guint *weight;
};