X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Fsession.c;h=439ad7b91494debd15256178961914d82cf359e3;hb=41254acc733dbd958295696f87ccb10631a9e9df;hp=0e5427ea9950094aee04019090247f933a46004f;hpb=e07a5d5dfcf5be4cc9eb3ab91a60866ff0aee09c;p=pazpar2-moved-to-github.git diff --git a/src/session.c b/src/session.c index 0e5427e..439ad7b 100644 --- a/src/session.c +++ b/src/session.c @@ -438,7 +438,7 @@ static int prepare_map(struct session *se, struct session_database *sdb) } } sdb->map = normalize_cache_get(se->normalize_cache, - se->service->server->config, s); + se->service, s); if (!sdb->map) return -1; } @@ -921,6 +921,8 @@ struct session *new_session(NMEM nmem, struct conf_service *service, return session; } +const char * client_get_suggestions_xml(struct client *cl, WRBUF wrbuf); + static struct hitsbytarget *hitsbytarget_nb(struct session *se, int *count, NMEM nmem) { @@ -949,6 +951,9 @@ static struct hitsbytarget *hitsbytarget_nb(struct session *se, res[*count].connected = client_get_connection(cl) ? 1 : 0; session_settings_dump(se, client_get_database(cl), w); res[*count].settings_xml = nmem_strdup(nmem, wrbuf_cstr(w)); + wrbuf_rewind(w); + wrbuf_puts(w, ""); + res[*count].suggestions_xml = nmem_strdup(nmem, client_get_suggestions_xml(cl, w)); wrbuf_destroy(w); (*count)++; } @@ -1045,6 +1050,11 @@ void perform_termlist(struct http_channel *c, struct session *se, for (j = 0; j < num_names; j++) { const char *tname; + + wrbuf_puts(c->wrbuf, "wrbuf, names[j]); + wrbuf_puts(c->wrbuf, "\">\n"); + for (i = 0; i < se->num_termlists; i++) { tname = se->termlists[i].name; @@ -1056,9 +1066,6 @@ void perform_termlist(struct http_channel *c, struct session *se, if (p) { int i; - wrbuf_puts(c->wrbuf, "wrbuf, tname); - wrbuf_puts(c->wrbuf, "\">\n"); for (i = 0; i < len && i < num; i++) { // prevent sending empty term elements @@ -1075,19 +1082,15 @@ void perform_termlist(struct http_channel *c, struct session *se, p[i]->frequency); wrbuf_puts(c->wrbuf, "\n"); } - wrbuf_puts(c->wrbuf, "\n"); } } } tname = "xtargets"; if (num_names > 0 && !strcmp(names[j], tname)) { - wrbuf_puts(c->wrbuf, "wrbuf, tname); - wrbuf_puts(c->wrbuf, "\">\n"); targets_termlist_nb(c->wrbuf, se, num, c->nmem); - wrbuf_puts(c->wrbuf, "\n"); } + wrbuf_puts(c->wrbuf, "\n"); } session_leave(se); nmem_destroy(nmem_tmp); @@ -1395,9 +1398,14 @@ static const char *get_mergekey(xmlDoc *doc, struct client *cl, int record_no, /* generate unique key if none is not generated already or is empty */ if (wrbuf_len(norm_wr) == 0) { - wrbuf_printf(norm_wr, "%s-%d", + wrbuf_printf(norm_wr, "position: %s-%d", client_get_id(cl), record_no); } + else + { + const char *lead = "content: "; + wrbuf_insert(norm_wr, 0, lead, strlen(lead)); + } if (wrbuf_len(norm_wr) > 0) mergekey_norm = nmem_strdup(nmem, wrbuf_cstr(norm_wr)); wrbuf_destroy(norm_wr); @@ -1662,6 +1670,9 @@ static int ingest_to_cluster(struct client *cl, // merged metadata rec_md = record_metadata_init(se->nmem, (const char *) value, ser_md->type, 0); + if (!rec_md) + continue; + wheretoput = &cluster->metadata[md_field_id]; // and polulate with data: