X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fsolr.c;fp=src%2Fsolr.c;h=ca35e56639c2ff38b59a849d74fa2627fc5d525b;hp=088fb63b3480a5fbe5f93485185d7777cfa3219a;hb=1331fd610a8bfc1e5a849d2c4d598c11557a8372;hpb=06e75ce285e9915a3a33095140bc390990e625f5 diff --git a/src/solr.c b/src/solr.c index 088fb63..ca35e56 100644 --- a/src/solr.c +++ b/src/solr.c @@ -461,19 +461,10 @@ int yaz_solr_encode_request(Z_HTTP_Request *hreq, Z_SRW_PDU *srw_pdu, { Z_SRW_searchRetrieveRequest *request = srw_pdu->u.request; solr_op = "select"; - switch (srw_pdu->u.request->query_type) - { - case Z_SRW_query_type_pqf: - yaz_add_name_value_str(encode, name, value, &i, - "q", request->query.pqf); - break; - case Z_SRW_query_type_cql: - yaz_add_name_value_str(encode, name, value, &i, - "q", request->query.cql); - break; - default: + if (!srw_pdu->u.request->query) return -1; - } + /* not considering query type here ! */ + yaz_add_name_value_str(encode, name, value, &i, "q", request->query); if (srw_pdu->u.request->startRecord) { Odr_int start = *request->startRecord - 1; @@ -506,32 +497,33 @@ int yaz_solr_encode_request(Z_HTTP_Request *hreq, Z_SRW_PDU *srw_pdu, else if (srw_pdu->which == Z_SRW_scan_request) { Z_SRW_scanRequest *request = srw_pdu->u.scan_request; solr_op = "terms"; - switch (srw_pdu->u.scan_request->query_type) + if (!srw_pdu->u.scan_request->scanClause) + return -1; + if (!strcmp(srw_pdu->u.scan_request->queryType, "pqf")) { - case Z_SRW_query_type_pqf: + yaz_add_name_value_str(encode, name, value, &i, + "terms.fl", request->scanClause); + yaz_add_name_value_str(encode, name, value, &i, + "terms.lower", request->scanClause); + } + else if (!strcmp(srw_pdu->u.scan_request->queryType, "cql")) + { + q = request->scanClause; + pos = strchr(q, ':'); + if (pos != NULL) { yaz_add_name_value_str(encode, name, value, &i, - "terms.fl", request->scanClause.pqf); + "terms.lower", odr_strdup(encode, pos + 1)); + *pos = '\0'; yaz_add_name_value_str(encode, name, value, &i, - "terms.lower", request->scanClause.pqf); - break; - case Z_SRW_query_type_cql: - q = request->scanClause.cql; - pos = strchr(q, ':'); - if (pos != NULL) { - yaz_add_name_value_str(encode, name, value, &i, - "terms.lower", odr_strdup(encode, pos + 1)); - *pos = '\0'; - yaz_add_name_value_str(encode, name, value, &i, - "terms.fl", odr_strdup(encode, q)); - *pos = ':'; - } else { - yaz_add_name_value_str(encode, name, value, &i, - "terms.lower", odr_strdup(encode, q)); - } - break; - default: - return -1; + "terms.fl", odr_strdup(encode, q)); + *pos = ':'; + } else { + yaz_add_name_value_str(encode, name, value, &i, + "terms.lower", odr_strdup(encode, q)); + } } + else + return -1; yaz_add_name_value_str(encode, name, value, &i, "terms.sort", "index"); yaz_add_name_value_int(encode, name, value, &i,