X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fsolr.c;h=5863fe1aceb0646dc5e988688dd6e87ce53ea427;hp=475f615b87e0806f0c4e324ac297968d15c43ea5;hb=fe42f72dc30321041420cf2d1a83867b1c450f38;hpb=6c674d1fb42e36b8fd7afe9da2a1f914b23063ad diff --git a/src/solr.c b/src/solr.c index 475f615..5863fe1 100644 --- a/src/solr.c +++ b/src/solr.c @@ -68,7 +68,7 @@ static void yaz_solr_decode_result_docs(ODR o, xmlNodePtr ptr, for (node = ptr->children; node; node = node->next) if (node->type == XML_ELEMENT_NODE) sr->num_records++; - + if (sr->num_records) sr->records = odr_malloc(o, sizeof(*sr->records) * sr->num_records); @@ -112,7 +112,7 @@ static int yaz_solr_decode_result(ODR o, xmlNodePtr ptr, { sr->numberOfRecords = odr_intdup(o, odr_atoi( (const char *) attr->children->content)); - } + } else if (!strcmp((const char *) attr->name, "start")) { start = odr_atoi((const char *) attr->children->content); @@ -368,7 +368,7 @@ static int yaz_solr_encode_facet_list( facet_list->elements[index]); if (r) return -1; - + } return 0; } @@ -382,8 +382,8 @@ int yaz_solr_encode_request(Z_HTTP_Request *hreq, Z_SRW_PDU *srw_pdu, char *uri_args; char *path; int i = 0; - - z_HTTP_header_add_basic_auth(encode, &hreq->headers, + + z_HTTP_header_add_basic_auth(encode, &hreq->headers, srw_pdu->username, srw_pdu->password); if (srw_pdu->which == Z_SRW_searchRetrieve_request) { @@ -413,6 +413,15 @@ int yaz_solr_encode_request(Z_HTTP_Request *hreq, Z_SRW_PDU *srw_pdu, yaz_add_name_value_str(encode, name, value, &i, "fl", request->recordSchema); + switch(srw_pdu->u.request->sort_type) + { + case Z_SRW_sort_type_none: + break; + case Z_SRW_sort_type_sort: + yaz_add_name_value_str(encode, name, value, &i, "sort", + srw_pdu->u.request->sort.sortKeys); + break; + } if (request->facetList) { Z_FacetList *facet_list = request->facetList; @@ -439,9 +448,9 @@ int yaz_solr_encode_request(Z_HTTP_Request *hreq, Z_SRW_PDU *srw_pdu, name[i++] = 0; yaz_array_to_uri(&uri_args, encode, name, value); - + hreq->method = "GET"; - + path = (char *) odr_malloc(encode, strlen(hreq->path) + strlen(uri_args) + strlen(solr_op) + 4);