X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fzebraapi.c;h=e13da6bb7c8e67ef126e2a369a0fdf827bf17060;hb=153745fb3ac60cf1e66e51ad9fb24bc014b62679;hp=d8857c1a6af731f0a83eb4ecbf8b2a5803655ad6;hpb=b3af54f7bf58db2a5d85b6a54b720bf6c5359c1f;p=idzebra-moved-to-github.git diff --git a/index/zebraapi.c b/index/zebraapi.c index d8857c1..e13da6b 100644 --- a/index/zebraapi.c +++ b/index/zebraapi.c @@ -1,4 +1,4 @@ -/* $Id: zebraapi.c,v 1.234 2006-11-21 22:17:49 adam Exp $ +/* $Id: zebraapi.c,v 1.239 2006-12-19 16:57:38 adam Exp $ Copyright (C) 1995-2006 Index Data ApS @@ -174,12 +174,12 @@ ZebraHandle zebra_open(ZebraService zs, Res res) return zh; } -ZebraService zebra_start (const char *configName) +ZebraService zebra_start(const char *configName) { return zebra_start_res(configName, 0, 0); } -ZebraService zebra_start_res (const char *configName, Res def_res, Res over_res) +ZebraService zebra_start_res(const char *configName, Res def_res, Res over_res) { Res res; @@ -209,7 +209,18 @@ ZebraService zebra_start_res (const char *configName, Res def_res, Res over_res) res_close(res); return 0; } + if (zebra_check_res(res)) + { + yaz_log(YLOG_FATAL, "Configuration error(s) for %s", + configName); + return 0; + } } + else + { + zebra_check_res(res); + } + zh = xmalloc(sizeof(*zh)); zh->global_res = res; zh->sessions = 0; @@ -303,6 +314,7 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name, const char *recordCompression = 0; const char *profilePath; char cwd[1024]; + int sort_type = ZEBRA_SORT_TYPE_FLAT; ZEBRA_RES ret = ZEBRA_OK; ASSERTZS; @@ -348,8 +360,7 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name, } getcwd(cwd, sizeof(cwd)-1); - profilePath = res_get_def(res, "profilePath", DEFAULT_PROFILE_PATH); - yaz_log(YLOG_DEBUG, "profilePath=%s cwd=%s", profilePath, cwd); + profilePath = res_get_def(res, "profilePath", 0); data1_set_tabpath (reg->dh, profilePath); data1_set_tabroot (reg->dh, reg_path); @@ -375,7 +386,7 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name, reg->records = 0; reg->dict = 0; - reg->sortIdx = 0; + reg->sort_index = 0; reg->isams = 0; reg->matchDict = 0; reg->isamc = 0; @@ -417,9 +428,22 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name, yaz_log (YLOG_WARN, "dict_open failed"); ret = ZEBRA_FAIL; } - if (!(reg->sortIdx = sortIdx_open (reg->bfs, rw))) + + + if (res_get_match (res, "sortindex", "f", "f")) + sort_type = ZEBRA_SORT_TYPE_FLAT; + else if (res_get_match (res, "sortindex", "i", "f")) + sort_type = ZEBRA_SORT_TYPE_ISAMB; + else + { + yaz_log (YLOG_WARN, "bad_value for 'sortindex'"); + ret = ZEBRA_FAIL; + } + + + if (!(reg->sort_index = zebra_sort_open(reg->bfs, rw, sort_type))) { - yaz_log (YLOG_WARN, "sortIdx_open failed"); + yaz_log (YLOG_WARN, "zebra_sort_open failed"); ret = ZEBRA_FAIL; } if (res_get_match (res, "isam", "s", ISAM_DEFAULT)) @@ -530,7 +554,7 @@ static void zebra_register_close(ZebraService zs, struct zebra_register *reg) dict_close (reg->dict); if (reg->matchDict) dict_close (reg->matchDict); - sortIdx_close (reg->sortIdx); + zebra_sort_close(reg->sort_index); if (reg->isams) isams_close (reg->isams); if (reg->isamc) @@ -1066,9 +1090,12 @@ ZEBRA_RES zebra_records_retrieve(ZebraHandle zh, ODR stream, int len = 0; zebra_snippets *hit_snippet = zebra_snippets_create(); + /* we disable hit snippets for now. It does not work well + and it slows retrieval down a lot */ +#if 0 zebra_snippets_hit_vector(zh, setname, poset[i].sysno, hit_snippet); - +#endif recs[i].errCode = zebra_record_fetch(zh, poset[i].sysno, poset[i].score, hit_snippet,