+ 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)
+ {
+ case Z_SRW_query_type_pqf:
+ yaz_add_name_value_str(encode, name, value, &i,
+ "terms.fl", request->scanClause.pqf);
+ 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;
+ }
+ yaz_add_name_value_str(encode, name, value, &i,
+ "terms.sort", "index");
+ yaz_add_name_value_int(encode, name, value, &i,
+ "terms.limit", request->maximumTerms);
+ }