New optional argument, maxrecs, for cmd=search
[pazpar2-moved-to-github.git] / src / logic.c
index 3ce3091..2ee1203 100644 (file)
@@ -470,7 +470,9 @@ static struct database_criterion *parse_filter(NMEM m, const char *buf)
 }
 
 enum pazpar2_error_code search(struct session *se,
-                               const char *query, const char *filter,
+                               const char *query,
+                               const char *maxrecs,
+                               const char *filter,
                                const char **addinfo)
 {
     int live_channels = 0;
@@ -498,6 +500,8 @@ enum pazpar2_error_code search(struct session *se,
 
     for (cl = se->clients; cl; cl = client_next_in_session(cl))
     {
+        if (maxrecs)
+            client_set_maxrecs(cl, atoi(maxrecs));
         if (prepare_session_database(se, client_get_database(cl)) < 0)
             continue;
         // Parse query for target
@@ -1089,15 +1093,15 @@ struct record *ingest_record(struct client *cl, const char *rec,
                              service, 
                              record, (char *) mergekey_norm, 
                              &se->total_merged);
-    if (global_parameters.dump_records)
-        yaz_log(YLOG_LOG, "Cluster id %s from %s (#%d)", cluster->recid,
-                sdb->database->url, record_no);
     if (!cluster)
     {
         /* no room for record */
         xmlFreeDoc(xdoc);
         return 0;
     }
+    if (global_parameters.dump_records)
+        yaz_log(YLOG_LOG, "Cluster id %s from %s (#%d)", cluster->recid,
+                sdb->database->url, record_no);
     relevance_newrec(se->relevance, cluster);
     
     // now parsing XML record and adding data to cluster or record metadata