X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Fsession.c;h=e3e0a0d87c52397ce19879e13ddb13ecabb7cb8a;hb=b22c4ae2c14eb5d2b991e6233cdea2a9fd7dcf6c;hp=b0fbfa10fa0a2f4f7c93932c81874dfa5f70919d;hpb=c4cfa1ee86d30d432d711d1f498fa3d6f1a2360d;p=pazpar2-moved-to-github.git diff --git a/src/session.c b/src/session.c index b0fbfa1..e3e0a0d 100644 --- a/src/session.c +++ b/src/session.c @@ -107,7 +107,8 @@ static int session_use(int delta) no_sessions += delta; sessions = no_sessions; yaz_mutex_leave(g_session_mutex); - yaz_log(YLOG_DEBUG, "%s sessions=%d", delta == 0 ? "" : (delta > 0 ? "INC" : "DEC"), no_sessions); + yaz_log(YLOG_DEBUG, "%s sessions=%d", delta == 0 ? "" : + (delta > 0 ? "INC" : "DEC"), no_sessions); return sessions; } @@ -148,10 +149,9 @@ static void session_leave(struct session *s, const char *caller) session_log(s, YLOG_DEBUG, "Session unlock by %s", caller); } -static void session_normalize_facet(struct session *s, const char *type, - const char *value, - WRBUF display_wrbuf, - WRBUF facet_wrbuf) +static void session_normalize_facet(struct session *s, + const char *type, const char *value, + WRBUF display_wrbuf, WRBUF facet_wrbuf) { struct conf_service *service = s->service; pp2_charset_token_t prt; @@ -1467,6 +1467,7 @@ static struct record_metadata *record_metadata_init( rec_md->data.text.disp = p; rec_md->data.text.sort = 0; + rec_md->data.text.snippet = 0; } else if (type == Metadata_type_year || type == Metadata_type_date) { @@ -1956,6 +1957,18 @@ static int ingest_to_cluster(struct client *cl, "for element '%s'", value, type); continue; } + + if (ser_md->type == Metadata_type_generic) + { + WRBUF w = wrbuf_alloc(); + if (relevance_snippet(se->relevance, + (char*) value, ser_md->name, w)) + rec_md->data.text.snippet = nmem_strdup(se->nmem, + wrbuf_cstr(w)); + wrbuf_destroy(w); + } + + wheretoput = &record->metadata[md_field_id]; while (*wheretoput) wheretoput = &(*wheretoput)->next; @@ -2183,7 +2196,6 @@ static int ingest_to_cluster(struct client *cl, relevance_countwords(se->relevance, cluster, (char *) value, rank, ser_md->name); } - // construct facets ... unless the client already has reported them if (ser_md->termlist && !client_has_facet(cl, (char *) type)) {