データ変換研究所
 
 
 
サイト内検索
データ変換研究所 全文検索
デ変研 全文検索 Office Cyclope デ変研 全文検索 Mail Cyclope デ変研 全文検索 デ変研AKエンジン
デ変研 AKエンジン
組込型全文検索エンジン
N-Gram方式を採用した組込み型全文検索エンジンです。高度なテキスト処理技術を応用し、大容量データ(テラ相当)でも高速にインデックス作成を行い、ファイルサーバ上にある多様の対応文書から全文検索できるようにします。
お客様の開発されるアプリケーションに組み込んでご利用いただいたり、カスタマイズを要望されるような検索システムにご利用いただけます。
[ 特徴・対応文章・インデキシング作成速度・価格 ] [ API一覧 ]
API一覧
AKエンジンのライブラリ(libakengine.a)の関数仕様は以下の通りです。
1 初期処理 Dhksakao_init
2 検索実行処理 Dhksakao_main
3 終了処理 Dhksakao_end
サンプルプログラム(AKエンジンをインストールしたディレクトリの直下にあるsample/main.c)においてご利用いただける検索機能の関数は以下の通りです。
1 検索結果のスコア設定処理 Dhksakao_set_score
2 スコアによるソート処理 Dhksakao_score_sort
3 2で使用するソート関数 Dhksakao_qsort_cmp
4 検索結果の出力処理 Dhksakao_print
関数名 int Dhksakao_init
(char *tables_rc_file, char *date_string,
int pcnt, int pnum, int reserved)
処理内容 初期処理(検索処理およびテキスト抽出ライブラリの初期処理)
引数  
  char *tables_rc_file
通常"/usr/local/lib/dhklib/tables.rc"を指定します。当該ファイルにより、テキスト抽出環境の設定(コード変換テーブルの設定等)を行います。当該ファイルで指定されたファイルパスが存在しない場合、エラーとなります。
  char *date_string
検索対象の日付(この日付は検索対象ファイルの更新日付に該当します)を開始日と終了日で指定します。例:2004年1月1日から2004年3月31日までは、  20040101-20040331 のように指定します。
  int pcnt
検索結果の出力時に、表示する検索結果ページ数を指定します。1で1ページ分、2で2ページ分の表示を行います。このページとは、下記の pnum が示す件数によって区切られる単位をいいます。
  int pnum
1ページ中に含まれる検索ヒット件数の最大値を指定します。
  int reserved
将来のためのリザーブ。
返値 テキスト抽出ライブラリの初期処理の結果が返ります。
-1  
  異常。 コード変換テーブルの設定不可等のエラーが発生しています。
0  
  正常。
処理の概要  
  ・ 初期化ファイルの読込
  ・ 検索条件(日付)、検索結果の出力形式(ページ)の設定
関数名 int Dhksakao_main
(char *index_dir, int search_flag,
int num, char **string,
struct ts_result *tsp, int kanji_in, int kanji_out,
int reserved)
処理内容 検索実行処理
引数  
  char *index_dir
検索対象となるインデックスを格納したディレクトリパスを指定します。
  int search_flag
検索条件を指定します。複数のキーワードをAND条件で検索する場合は1を、OR条件で検索する場合は2を指定します。
  int num
検索文字列の個数を指定します。
  char **string
検索文字列へのポインタを指定します。
  struct ts_result *tsp
検索結果(全体)を格納する構造体へのポインタを指定します。
(*後述の「検索結果の格納」を参照してください。)
  int kanji_in
検索文字列を読み込むときの漢字コードを指定します。DHK_TYPE_EUCまたはDHK_TYPE_SJISを指定します。(DHK_TYPE_EUC、DHK_TYPE_SJISはinclude/dhktypes.hで定義しています。)
  int kanji_out
検索結果を出力するときの漢字コードを指定します。DHK_TYPE_EUCまたはDHK_TYPE_SJISを指定します。(DHK_TYPE_EUC、DHK_TYPE_SJISはinclude/dhktypes.hで定義しています。)
  int reserved
将来のためのリザーブ
返値
-1  
  異常。 以下のようなエラーが発生しています。
     ・メモリの確保が失敗
     ・ファイルオープンが失敗
0  
  正常。
検索結果の格納  
  検索結果の全体を把握する情報を格納する構造体の構成は以下のようになります。
  struct ts_result {
 struct result *ts_ptr;
 int ts_max_n;
 int ts_cur_n;
 int ts_max_score;
};
  struct result *ts_ptr
検索結果の詳細情報を格納します。合計件数分必要となります。
(include/dhktypes.h の struct result を参照してください。)
  int ts_max_n
検索結果の件数の上限値。
  int ts_cur_n
検索実行時において、現検索件数を記憶する領域。上記のts_max_nと比較してこれを超えないように制御する。

  int ts_max_score
検索結果のスコアの最大値。ヒット率を算出するために使用します。
処理の概要  
  ・ 読込バッファのメモリ確保
・ 管理構造のメモリ確保
・ 管理構造の登録
・ インデックス読込み処理
・ 検索処理
関数名 int Dhksakao_end(struct ts_result *tsp)
処理内容 終了処理
引数  
  struct ts_result *tsp
検索結果(全体)を格納した構造体へのポインタを指定します。
(*Dhksakao_main での「検索結果の格納」を参照してください。)
返値
-1  
  異常。 以下のようなエラーが発生しています。
     ・メモリの確保が失敗
     ・ファイルオープンが失敗
0  
  正常。
引数  
  struct ts_result *tsp
検索結果(全体)の情報を格納する構造体へのポインタを指定します。
  struct result *resp
各検索ヒット項目の情報を格納する構造体へのポインタを指定します。検索結果のトータルな情報を格納する上記のtspが保持しているスコアとrespが示す1件の情報が保持しているスコアを比較し、大きい方のスコア値をトータルな情報を格納するtspへ記録します。
処理の概要  
  検索結果のトータルな情報が保持するスコア値とある1件の情報が保持するスコア値を比較し、トータル情報にスコアの最大値が保持されるようにします。
関数名 void Dhksakao_score_sort
(struct ts_result *tsp)
処理内容 検索結果をスコアによりソートする
引数  
  struct ts_result *tsp
検索結果(全体)の情報を格納する構造体へのポインタを指定します。
処理の概要  
  ・qsort関数を使用して、検索結果をスコア順にソートします
・比較関数には後述の Dhksakao_qsort_cmp を使用します
関数名 int Dhksakao_qsort_cmp
(struct result *ap, struct result *bp)
処理内容 処理内容 スコアの大小を比較する
引数  
  struct result *ap
struct result *bp

検索結果1件毎の情報を格納した構造体へのポインタを示します。apとbpが保持するスコアの大小を比較します
返値  
  n(任意の値)
  bp(第2引数)が保持するスコアからap(第1引数)が保持するスコアを引いた値。
処理の概要  
  ・Dhksakao_score_sort(qsort)で使用する比較関数
関数名 void Dhksakao_print
(struct ts_result *tsp, int pcnt, int pnum)
処理内容 検索結果の出力(表示)
引数  
  struct ts_result *tsp
検索結果(全体)の情報を格納する構造体へのポインタを指定します。 。
  int pcnt
検索結果の出力時に、表示する検索結果ページ数を指定します。1で1ページ分、2で2ページ分の表示を行います。このページとは、下記の pnum が示す件数によって区切られる単位をいいます。
  int pnum
1ページ中に含まれる検索ヒット件数の最大値を指定します。
処理の概要  
・検索結果を以下の形式で出力します
#<HEADSTART>#  
h:0001,0001,0004,0020 →「1ページの件数20件、検索ヒット件数
#<HEADEND># 4件、1件目から表示」を意味します
#<DATASTART># →「1件目のデータ出力の開始」
D:2004/04/19 →「該当ファイルの更新日付」
S:6402 →「該当ファイルサイズ」
H:85 →「スコア」
P:/home/akao/files/all.txt.akb →「該当ファイル名(中間ファイル)」
O:/home/akao/mnt/all.txt →「該当ファイル名」
A:(no author) →「プロパティ情報(著作者名)」
T:(no title) →「プロパティ情報(タイトル)」
C:(no company) →「プロパティ情報(会社名)」
F:(no server) →「検索サーバホスト名(指定があれば)」
B: あはれとも いふべき人は 思ほえで 身のいたづらに なりぬべきかな....れとも 分かぬまに 雲がくれにし 夜半の月かな もろともに あはれと思へ 山桜 花よりほかに 知る人もなし やすらはで 寝なま....がなと 思ひけるかな 契りおきし させもが露を いのちにて あはれ今年の 秋もいぬめり 契りきな かたみに袖を しぼりつつ 末..  →「該当ファイルからの抜粋」
#<DATAEND># →「1件目のデータ出力終了」
#<DATASTART># →「2件目のデータ出力開始」
D:2004/04/19  
S:68  
H:28  
P:/home/akao/files/aha.txt.akb  
O:/home/akao/mnt/aha.txt  
A:(no author)  
T:(no title)  
C:(no company)  
F:(no server)  
B: あはれとも いふべき人は 思ほえで 身のいたづらに なりぬべきかな..
#<DATAEND># →「3件目のデータ出力終了」
#<DATASTART># →「4件目のデータ出力開始」
D:2004/04/19  
S:60  
H:28  
P:/home/akao/files/moro.txt.akb  
O:/home/akao/mnt/moro.txt  
A:(no author)  
T:(no title)  
C:(no company)  
F:(no server)  
B: もろともに あはれと思へ 山桜 花よりほかに 知る人もな
#<DATAEND># →「4件目のデータ出力終了」
[ 特徴・対応文章・インデキシング作成速度・価格 ] [ API一覧 ]
[ ページトップ ]

株式会社 データ変換研究所
〒604-8155 京都市中京区錦小路通室町東入占出山町308 ヤマチュウビル1F
TEL075-254-8780 FAX075-254-8790  050-3540-2795(IP電話番号)

データ変換研究所
『記載されている各社の会社名・製品名は各社の登録商標または商標です』 ©Dehenken Limited 2006-2008. All Rights Reserved.