2008-01-30
エラーチェックをまったくして無いから気をつけて
#include <cstdio> #include <cstring> #include "senna.h" int main() { sen_init(); //辞書作成 sen_index* index = sen_index_create("c:\\index",0,SEN_INDEX_NGRAM | SEN_INDEX_SPLIT_ALPHA,512,sen_enc_default); sen_index_upd(index, "apple",NULL,0,"apple", 5); sen_index_upd(index, "book",NULL,0,"book", 4); sen_index_upd(index, "aplication",NULL,0,"aplication", 10); sen_index_upd(index, "aplicot",NULL,0,"aplicot", 7); //検索 char miss_spell[] = "boplecot";//aplicot って入力したかった。 char key[SEN_SYM_MAX_KEY_SIZE]; int score; sen_records* records = sen_records_open(sen_rec_document,sen_rec_none,0); sen_select_optarg op; memset(&op,0,sizeof(op)); op.mode = sen_sel_similar; op.similarity_threshold = 10; //よくわからない。いくら指定する? sen_index_select(index,miss_spell,sizeof(miss_spell),records,sen_sel_or,&op); //結果表示 sen_records_sort(records,10,NULL); while(sen_records_next(records,key,SEN_SYM_MAX_KEY_SIZE,&score)) { printf("key = %s score = %d\n",key,score); } sen_records_close(records); sen_index_close(index); sen_fin(); getchar(); return 0; }
実行結果
key = aplicot score = 38 key = apple score = 21 key = book score = 17 key = application score = 4