ret = 0;
}
session_leave(s);
- return 0;
+ return ret;
}
void session_alert_watch(struct session *s, int what)
return res == 0;
}
-
-
enum pazpar2_error_code search(struct session *se,
const char *query,
const char *startrecs, const char *maxrecs,
const char *filter,
+ const char *limit,
const char **addinfo)
{
int live_channels = 0;
int no_failed = 0;
struct client_list *l;
struct timeval tval;
+ facet_limits_t facet_limits;
session_log(se, YLOG_DEBUG, "Search");
tval.tv_sec += 5;
+ facet_limits = facet_limits_create(limit);
+ if (!facet_limits)
+ {
+ *addinfo = "limit";
+ return PAZPAR2_MALFORMED_PARAMETER_VALUE;
+ }
for (l = se->clients; l; l = l->next)
{
struct client *cl = l->client;
client_set_startrecs(cl, atoi(startrecs));
if (prepare_session_database(se, client_get_database(cl)) < 0)
;
- else if (client_parse_query(cl, query) < 0)
+ else if (client_parse_query(cl, query, facet_limits) < 0)
no_failed++;
else
{
client_start_search(cl);
}
}
+ facet_limits_destroy(facet_limits);
session_leave(se);
if (no_working == 0)
{
return res;
}
-struct termlist_score **termlist(struct session *se, const char *name, int *num)
+struct termlist_score **get_termlist_score(struct session *se,
+ const char *name, int *num)
{
int i;
struct termlist_score **tl = 0;
// construct facets ... unless the client already has reported them
if (ser_md->termlist && !client_has_facet(cl, (char *) type))
{
-
if (ser_md->type == Metadata_type_year)
{
char year[64];