X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=index%2Fzebraapi.c;h=091fbf8c2070447f85cfb5428eea3084034fd62e;hb=e1352999e1be86b0ce5c2698bb62f9fc7d598a4f;hp=99054132b8141959706c72d6fad80d787d7b2eaf;hpb=161aa7805930f6b91ccea027e4afa4ccce41c379;p=idzebra-moved-to-github.git diff --git a/index/zebraapi.c b/index/zebraapi.c index 9905413..091fbf8 100644 --- a/index/zebraapi.c +++ b/index/zebraapi.c @@ -1,5 +1,5 @@ -/* $Id: zebraapi.c,v 1.238 2006-12-18 23:40:07 adam Exp $ - Copyright (C) 1995-2006 +/* $Id: zebraapi.c,v 1.244 2007-01-16 15:31:23 adam Exp $ + Copyright (C) 1995-2007 Index Data ApS This file is part of the Zebra server. @@ -258,6 +258,7 @@ ZebraService zebra_start_res(const char *configName, Res def_res, Res over_res) } } + zh->timing = yaz_timing_create(); zh->path_root = res_get (zh->global_res, "root"); zh->nmem = nmem_create(); zh->record_classes = recTypeClass_create (zh->global_res, zh->nmem); @@ -436,7 +437,7 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name, sort_type = ZEBRA_SORT_TYPE_ISAMB; else { - yaz_log (YLOG_WARN, "bad_value for 'sort:'"); + yaz_log (YLOG_WARN, "bad_value for 'sortindex'"); ret = ZEBRA_FAIL; } @@ -581,8 +582,6 @@ ZEBRA_RES zebra_stop(ZebraService zs) { if (!zs) return ZEBRA_OK; - yaz_log (log_level, "zebra_stop"); - while (zs->sessions) { zebra_close (zs->sessions); @@ -596,6 +595,15 @@ ZEBRA_RES zebra_stop(ZebraService zs) recTypeClass_destroy(zs->record_classes); nmem_destroy(zs->nmem); res_close (zs->global_res); + + yaz_timing_stop(zs->timing); + yaz_log (YLOG_LOG, "zebra_stop: %4.2f %4.2f %4.2f", + yaz_timing_get_real(zs->timing), + yaz_timing_get_user(zs->timing), + yaz_timing_get_sys(zs->timing)); + + + yaz_timing_destroy(&zs->timing); xfree(zs); return ZEBRA_OK; } @@ -1007,8 +1015,15 @@ ZEBRA_RES zebra_set_approx_limit(ZebraHandle zh, zint approx_limit) return ZEBRA_OK; } -ZEBRA_RES zebra_search_RPN(ZebraHandle zh, ODR o, Z_RPNQuery *query, - const char *setname, zint *hits) +void zebra_set_partial_result(ZebraHandle zh) +{ + zh->partial_result = 1; +} + +ZEBRA_RES zebra_search_RPN_x(ZebraHandle zh, ODR o, Z_RPNQuery *query, + const char *setname, zint *hits, + int *estimated_hit_count, + int *partial_resultset) { ZEBRA_RES r; @@ -1019,19 +1034,31 @@ ZEBRA_RES zebra_search_RPN(ZebraHandle zh, ODR o, Z_RPNQuery *query, assert(hits); assert(setname); yaz_log(log_level, "zebra_search_rpn"); - zh->hits = 0; - *hits = 0; + + zh->partial_result = 0; if (zebra_begin_read(zh) == ZEBRA_FAIL) return ZEBRA_FAIL; r = resultSetAddRPN(zh, odr_extract_mem(o), query, - zh->num_basenames, zh->basenames, setname); + zh->num_basenames, zh->basenames, setname, + hits, estimated_hit_count); + + *partial_resultset = zh->partial_result; zebra_end_read(zh); - *hits = zh->hits; return r; } +ZEBRA_RES zebra_search_RPN(ZebraHandle zh, ODR o, Z_RPNQuery *query, + const char *setname, zint *hits) +{ + int estimated_hit_count; + int partial_resultset; + return zebra_search_RPN_x(zh, o, query, setname, hits, + &estimated_hit_count, + &partial_resultset); +} + ZEBRA_RES zebra_records_retrieve(ZebraHandle zh, ODR stream, const char *setname, Z_RecordComposition *comp, @@ -2379,6 +2406,7 @@ ZEBRA_RES zebra_search_PQF(ZebraHandle zh, const char *pqf_query, Z_RPNQuery *query; ODR odr; + ZEBRA_CHECK_HANDLE(zh); odr = odr_createmem(ODR_ENCODE);