X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fzoom-z3950.c;h=5726d7dca7fda60874a10e89f21b1775bf9d003b;hb=d1b6ed4a27c255041e3d719e4b05ab476c337bbf;hp=a65b54fcd596e2ba1c2410ce12a85c8fe446f5c9;hpb=a91467db0bbbaefbaf64410b657a9439104997e0;p=yaz-moved-to-github.git diff --git a/src/zoom-z3950.c b/src/zoom-z3950.c index a65b54f..5726d7d 100644 --- a/src/zoom-z3950.c +++ b/src/zoom-z3950.c @@ -645,7 +645,6 @@ static zoom_ret Z3950_send_search(ZOOM_connection c) const char *elementSetName; const char *smallSetElementSetName; const char *mediumSetElementSetName; - const char *facets; assert(c->tasks); assert(c->tasks->which == ZOOM_TASK_SEARCH); @@ -678,7 +677,7 @@ static zoom_ret Z3950_send_search(ZOOM_connection c) yaz_oi_set_facetlist(oi, c->odr_out, facet_list); } else - yaz_log(YLOG_WARN, "Unable to parse facets: %s", facets); + yaz_log(YLOG_WARN, "Unable to parse facets: %s", r->req_facets); } assert(r); @@ -790,7 +789,7 @@ static zoom_ret Z3950_send_search(ZOOM_connection c) if (!rp) break; } - r->setname = xstrdup(setname); + r->setname = odr_strdup(r->odr, setname); yaz_log(c->log_details, "%p ZOOM_connection_send_search: " "allocating set %s", c, r->setname); } @@ -798,7 +797,7 @@ static zoom_ret Z3950_send_search(ZOOM_connection c) { yaz_log(c->log_details, "%p ZOOM_connection_send_search: using " "default set", c); - r->setname = xstrdup("default"); + r->setname = odr_strdup(r->odr, "default"); } ZOOM_options_set(r->options, "setname", r->setname); } @@ -1141,8 +1140,8 @@ void ZOOM_handle_facet_list(ZOOM_resultset r, Z_FacetList *fl) } } -static void handle_facet_result(ZOOM_connection c, ZOOM_resultset r, - Z_OtherInformation *o) +void ZOOM_handle_facet_result(ZOOM_connection c, ZOOM_resultset r, + Z_OtherInformation *o) { int i; for (i = 0; o && i < o->num_elements; i++) @@ -1196,8 +1195,8 @@ static void handle_queryExpression(ZOOM_options opt, const char *name, } -static void handle_search_result(ZOOM_connection c, ZOOM_resultset resultset, - Z_OtherInformation *o) +void ZOOM_handle_search_result(ZOOM_connection c, ZOOM_resultset resultset, + Z_OtherInformation *o) { int i; for (i = 0; o && i < o->num_elements; i++) @@ -1269,6 +1268,7 @@ static void handle_Z3950_search_response(ZOOM_connection c, { ZOOM_resultset resultset; ZOOM_Event event; + const char *resultCountPrecision = "exact"; if (!c->tasks || c->tasks->which != ZOOM_TASK_SEARCH) return; @@ -1282,6 +1282,8 @@ static void handle_Z3950_search_response(ZOOM_connection c, } if (sr->resultSetStatus) { + if (*sr->resultSetStatus == Z_SearchResponse_estimate) + resultCountPrecision = "estimate"; ZOOM_options_set_int(resultset->options, "resultSetStatus", *sr->resultSetStatus); } @@ -1290,13 +1292,16 @@ static void handle_Z3950_search_response(ZOOM_connection c, ZOOM_options_set_int(resultset->options, "presentStatus", *sr->presentStatus); } - handle_search_result(c, resultset, sr->additionalSearchInfo); + ZOOM_options_set(resultset->options, "resultCountPrecision", + resultCountPrecision); + ZOOM_handle_search_result(c, resultset, sr->additionalSearchInfo); - handle_facet_result(c, resultset, sr->additionalSearchInfo); + ZOOM_handle_facet_result(c, resultset, sr->additionalSearchInfo); resultset->size = *sr->resultCount; - ZOOM_memcached_hitcount(c, resultset); + ZOOM_memcached_hitcount(c, resultset, sr->additionalSearchInfo, + resultCountPrecision); resultset->live_set = 2; handle_Z3950_records(c, sr->records, 0); }