+ else if (srw_pdu->which == Z_SRW_scan_request) {
+ Z_SRW_scanRequest *request = srw_pdu->u.scan_request;
+ solr_op = "terms";
+ if (!srw_pdu->u.scan_request->scanClause)
+ return -1;
+ if (!strcmp(srw_pdu->u.scan_request->queryType, "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.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));
+ }
+ }
+ else
+ 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);
+ }