Show command may re-search for targets that support it
[pazpar2-moved-to-github.git] / src / client.c
index 825d900..bf3e04c 100644 (file)
@@ -665,7 +665,8 @@ int client_has_facet(struct client *cl, const char *name)
     return 0;
 }
 
-void client_start_search(struct client *cl)
+void client_start_search(struct client *cl, const char *sort_strategy,
+                         const char *sort_spec)
 {
     struct session_database *sdb = client_get_database(cl);
     struct connection *co = client_get_connection(cl);
@@ -741,13 +742,29 @@ void client_start_search(struct client *cl)
         ZOOM_query_cql(q, cl->cqlquery);
         if (*opt_sort)
             ZOOM_query_sortby(q, opt_sort);
+        if (sort_strategy && sort_spec)
+        {
+            yaz_log(YLOG_LOG, "applying %s %s", sort_strategy, sort_spec);
+            ZOOM_query_sortby2(q, sort_strategy, sort_spec);
+        }
         rs = ZOOM_connection_search(link, q);
         ZOOM_query_destroy(q);
     }
     else
     {
+        ZOOM_query q = ZOOM_query_create();
+
         yaz_log(YLOG_LOG, "Search %s PQF: %s", client_get_id(cl), cl->pquery);
-        rs = ZOOM_connection_search_pqf(link, cl->pquery);
+
+        ZOOM_query_prefix(q, cl->pquery);
+
+        if (sort_strategy && sort_spec)
+        {
+            yaz_log(YLOG_LOG, "applying %s %s", sort_strategy, sort_spec);
+            ZOOM_query_sortby2(q, sort_strategy, sort_spec);
+        }
+        rs = ZOOM_connection_search(link, q);
+        ZOOM_query_destroy(q);
     }
     ZOOM_resultset_destroy(cl->resultset);
     cl->resultset = rs;