X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fsolr.c;h=28b8f11b552e33bb3afb204c1f5a692069a77daa;hp=c13c4ed680a104923282fc9f3f46229a624e168a;hb=2715f6522ca62ab5dbc886c21ed18945743216f0;hpb=369d5e89785b7aefa6a269724692586af0215a91 diff --git a/src/solr.c b/src/solr.c index c13c4ed..28b8f11 100644 --- a/src/solr.c +++ b/src/solr.c @@ -4,7 +4,7 @@ */ /** * \file solr.c - * \brief Implements SOAP Webservice decoding/encoding + * \brief Implements Solr decoding/encoding */ #if HAVE_CONFIG_H #include @@ -118,7 +118,7 @@ static int yaz_solr_decode_result(ODR o, xmlNodePtr ptr, return -1; } -static const char *get_facet_term_count(xmlNodePtr node, int *freq) +static const char *get_facet_term_count(xmlNodePtr node, Odr_int *freq) { const char *term = yaz_element_attribute_value_get(node, "int", "name"); xmlNodePtr child; @@ -131,7 +131,7 @@ static const char *get_facet_term_count(xmlNodePtr node, int *freq) if (child->type == XML_TEXT_NODE) wrbuf_puts(wrbuf, (const char *) child->content); } - *freq = atoi(wrbuf_cstr(wrbuf)); + *freq = odr_atoi(wrbuf_cstr(wrbuf)); wrbuf_destroy(wrbuf); return term; } @@ -154,11 +154,10 @@ Z_FacetField *yaz_solr_decode_facet_field(ODR o, xmlNodePtr ptr, index = 0; for (node = ptr->children; node; node = node->next) { - int count = 0; + Odr_int count = 0; const char *term = get_facet_term_count(node, &count); facet_field_term_set(o, facet_field, - facet_term_create(o, term_create(o, term), count), - index); + facet_term_create_cstr(o, term, count), index); index++; } return facet_field; @@ -357,7 +356,20 @@ int yaz_solr_encode_request(Z_HTTP_Request *hreq, Z_SRW_PDU *srw_pdu, } else return -1; - name[i] = 0; + + if (srw_pdu->extra_args) + { + Z_SRW_extra_arg *ea = srw_pdu->extra_args; + for (; ea && i < SOLR_MAX_PARAMETERS; ea = ea->next) + { + name[i] = ea->name; + value[i] = ea->value; + i++; + } + } + + name[i++] = 0; + yaz_array_to_uri(&uri_args, encode, name, value); hreq->method = "GET";