X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fsession.c;h=f7c0b99cd498512685d4028166570662709d001c;hb=refs%2Fheads%2Fbranch-1.4.4;hp=0c914caa453da49cd0e07152e36c5dcf3e06fe7e;hpb=4208d2ae922fa0d0d61fb14a5b69a10dfefba0fc;p=pazpar2-moved-to-github.git diff --git a/src/session.c b/src/session.c index 0c914ca..f7c0b99 100644 --- a/src/session.c +++ b/src/session.c @@ -146,7 +146,7 @@ void pull_terms(NMEM nmem, struct ccl_rpn_node *n, char **termlist, int *num) } -static void add_facet(struct session *s, const char *type, const char *value) +void add_facet(struct session *s, const char *type, const char *value, int count) { int i; @@ -168,7 +168,9 @@ static void add_facet(struct session *s, const char *type, const char *value) = termlist_create(s->nmem, TERMLIST_HIGH_SCORE); s->num_termlists = i + 1; } - termlist_insert(s->termlists[i].termlist, value); + yaz_log(YLOG_DEBUG, "Session: facets for %s: %s (%d)", type, value, count); + + termlist_insert(s->termlists[i].termlist, value, count); } static xmlDoc *record_to_xml(struct session_database *sdb, const char *rec) @@ -1143,6 +1145,7 @@ static int ingest_to_cluster(struct client *cl, \param cl client holds the result set for record \param rec record buffer (0 terminated) \param record_no record position (1, 2, ..) + \param nmem working NMEM \retval 0 OK \retval -1 failure */ @@ -1374,22 +1377,23 @@ static int ingest_to_cluster(struct client *cl, (char *) value, ser_md->rank, ser_md->name); - // construct facets ... - if (ser_md->termlist) + // 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]; sprintf(year, "%d", rec_md->data.number.max); - add_facet(se, (char *) type, year); + add_facet(se, (char *) type, year, 1); if (rec_md->data.number.max != rec_md->data.number.min) { sprintf(year, "%d", rec_md->data.number.min); - add_facet(se, (char *) type, year); + add_facet(se, (char *) type, year, 1); } } else - add_facet(se, (char *) type, (char *) value); + add_facet(se, (char *) type, (char *) value, 1); } // cleaning up