projects
/
yaz-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ZOOM_resultset_record_immedate never makes RECV_RECORD event
[yaz-moved-to-github.git]
/
src
/
zoom-z3950.c
diff --git
a/src/zoom-z3950.c
b/src/zoom-z3950.c
index
e39ff8a
..
5726d7d
100644
(file)
--- 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 *elementSetName;
const char *smallSetElementSetName;
const char *mediumSetElementSetName;
- const char *facets;
assert(c->tasks);
assert(c->tasks->which == ZOOM_TASK_SEARCH);
assert(c->tasks);
assert(c->tasks->which == ZOOM_TASK_SEARCH);
@@
-668,15
+667,17
@@
static zoom_ret Z3950_send_search(ZOOM_connection c)
if (!mediumSetElementSetName)
mediumSetElementSetName = elementSetName;
if (!mediumSetElementSetName)
mediumSetElementSetName = elementSetName;
- facets = ZOOM_options_get(r->options, "facets");
- if (facets) {
- Z_FacetList *facet_list = yaz_pqf_parse_facet_list(c->odr_out, facets);
- if (facet_list) {
+ if (r->req_facets)
+ {
+ Z_FacetList *facet_list =
+ yaz_pqf_parse_facet_list(c->odr_out, r->req_facets);
+ if (facet_list)
+ {
Z_OtherInformation **oi = &search_req->additionalSearchInfo;
yaz_oi_set_facetlist(oi, c->odr_out, facet_list);
}
else
Z_OtherInformation **oi = &search_req->additionalSearchInfo;
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);
}
assert(r);
@@
-788,7
+789,7
@@
static zoom_ret Z3950_send_search(ZOOM_connection c)
if (!rp)
break;
}
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);
}
yaz_log(c->log_details, "%p ZOOM_connection_send_search: "
"allocating set %s", c, r->setname);
}
@@
-796,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);
{
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);
}
}
ZOOM_options_set(r->options, "setname", r->setname);
}
@@
-1121,21
+1122,26
@@
static ZOOM_facet_field get_zoom_facet_field(ODR odr, Z_FacetField *facet)
void ZOOM_handle_facet_list(ZOOM_resultset r, Z_FacetList *fl)
{
int j;
void ZOOM_handle_facet_list(ZOOM_resultset r, Z_FacetList *fl)
{
int j;
- r->num_facets = fl->num;
+ r->num_res_facets = fl->num;
yaz_log(YLOG_DEBUG, "Facets found: %d", fl->num);
yaz_log(YLOG_DEBUG, "Facets found: %d", fl->num);
- r->facets = odr_malloc(r->odr, fl->num * sizeof(*r->facets));
+ r->res_facets = odr_malloc(r->odr, fl->num * sizeof(*r->res_facets));
r->facets_names = odr_malloc(r->odr, fl->num * sizeof(*r->facets_names));
for (j = 0; j < fl->num; j++)
{
r->facets_names = odr_malloc(r->odr, fl->num * sizeof(*r->facets_names));
for (j = 0; j < fl->num; j++)
{
- r->facets[j] = get_zoom_facet_field(r->odr, fl->elements[j]);
- if (!r->facets[j])
+ r->res_facets[j] = get_zoom_facet_field(r->odr, fl->elements[j]);
+ if (!r->res_facets[j])
+ {
+ r->facets_names[j] = 0;
yaz_log(YLOG_DEBUG, "Facet field missing on index %d !", j);
yaz_log(YLOG_DEBUG, "Facet field missing on index %d !", j);
- r->facets_names[j] = (char *) ZOOM_facet_field_name(r->facets[j]);
+ }
+ else
+ r->facets_names[j] = (char *)
+ ZOOM_facet_field_name(r->res_facets[j]);
}
}
}
}
-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++)
{
int i;
for (i = 0; o && i < o->num_elements; i++)
@@
-1189,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++)
{
int i;
for (i = 0; o && i < o->num_elements; i++)
@@
-1262,6
+1268,7
@@
static void handle_Z3950_search_response(ZOOM_connection c,
{
ZOOM_resultset resultset;
ZOOM_Event event;
{
ZOOM_resultset resultset;
ZOOM_Event event;
+ const char *resultCountPrecision = "exact";
if (!c->tasks || c->tasks->which != ZOOM_TASK_SEARCH)
return;
if (!c->tasks || c->tasks->which != ZOOM_TASK_SEARCH)
return;
@@
-1275,6
+1282,8
@@
static void handle_Z3950_search_response(ZOOM_connection c,
}
if (sr->resultSetStatus)
{
}
if (sr->resultSetStatus)
{
+ if (*sr->resultSetStatus == Z_SearchResponse_estimate)
+ resultCountPrecision = "estimate";
ZOOM_options_set_int(resultset->options, "resultSetStatus",
*sr->resultSetStatus);
}
ZOOM_options_set_int(resultset->options, "resultSetStatus",
*sr->resultSetStatus);
}
@@
-1283,13
+1292,16
@@
static void handle_Z3950_search_response(ZOOM_connection c,
ZOOM_options_set_int(resultset->options, "presentStatus",
*sr->presentStatus);
}
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;
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);
}
resultset->live_set = 2;
handle_Z3950_records(c, sr->records, 0);
}