New optional argument, startrecs, for cmd=search
[pazpar2-moved-to-github.git] / src / http_command.c
index a149e50..37ad0bc 100644 (file)
@@ -777,6 +777,8 @@ static void show_records(struct http_channel *c, int active)
             write_subrecord(p, c->wrbuf, service, 0); // subrecs w/o details
         if (ccount > 1)
             wrbuf_printf(c->wrbuf, "<count>%d</count>\n", ccount);
+       if (strstr(sort, "relevance"))
+           wrbuf_printf(c->wrbuf, "<relevance>%d</relevance>\n", rec->relevance);
         wrbuf_puts(c->wrbuf, "<recid>");
         wrbuf_xmlputs(c->wrbuf, rec->recid);
         wrbuf_puts(c->wrbuf, "</recid>\n");
@@ -810,7 +812,7 @@ static void cmd_show(struct http_channel *c)
 
     if (block)
     {
-        if (status && (!s->psession->reclist || !s->psession->reclist->num_records))
+        if (status && reclist_get_num_records(s->psession->reclist) == 0)
         {
             // if there is already a watch/block. we do not block this one
             if (session_set_watch(s->psession, SESSION_WATCH_SHOW,
@@ -868,6 +870,8 @@ static void cmd_search(struct http_channel *c)
     struct http_session *s = locate_session(rq, rs);
     const char *query = http_argbyname(rq, "query");
     const char *filter = http_argbyname(rq, "filter");
+    const char *maxrecs = http_argbyname(rq, "maxrecs");
+    const char *startrecs = http_argbyname(rq, "startrecs");
     enum pazpar2_error_code code;
     const char *addinfo = 0;
 
@@ -883,7 +887,7 @@ static void cmd_search(struct http_channel *c)
         error(rs, PAZPAR2_MALFORMED_PARAMETER_ENCODING, "query");
         return;
     }
-    code = search(s->psession, query, filter, &addinfo);
+    code = search(s->psession, query, startrecs, maxrecs, filter, &addinfo);
     if (code)
     {
         error(rs, code, addinfo);