From d521d8f26b3d01d6a00933d5bbdafdd5192dbb86 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Tue, 11 Jun 2013 10:36:00 +0200 Subject: [PATCH] Snippets: multi words; less logging --- src/relevance.c | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/src/relevance.c b/src/relevance.c index 4d5b6e4..54bebb5 100644 --- a/src/relevance.c +++ b/src/relevance.c @@ -89,37 +89,53 @@ int relevance_snippet(struct relevance *r, { int no = 0; const char *norm_str; -#if 1 - yaz_log(YLOG_LOG, "relevance_snippet for field=%s content=%s", - name, words); -#endif - pp2_charset_token_first(r->prt, words, 0); + int highlight = 0; + pp2_charset_token_first(r->prt, words, 0); while ((norm_str = pp2_charset_token_next(r->prt))) { size_t org_start, org_len; struct word_entry *entries = r->entries; - int highlight = 0; int i; pp2_get_org(r->prt, &org_start, &org_len); for (; entries; entries = entries->next, i++) { - yaz_log(YLOG_LOG, "Compare: %s %s", norm_str, entries->norm_str); if (*norm_str && !strcmp(norm_str, entries->norm_str)) + { + break; + if (!highlight) + { + highlight = 1; + wrbuf_puts(w_snippet, ""); + } + break; + } + } + if (entries) + { + if (!highlight) + { highlight = 1; + wrbuf_puts(w_snippet, ""); + no++; + } + } + else + { + if (highlight) + { + highlight = 0; + wrbuf_puts(w_snippet, ""); + } } - if (highlight) - wrbuf_puts(w_snippet, ""); - wrbuf_xmlputs_n(w_snippet, words + org_start, org_len); - if (highlight) - wrbuf_puts(w_snippet, ""); - no += highlight; } + if (highlight) + wrbuf_puts(w_snippet, ""); if (no) { - yaz_log(YLOG_LOG, "SNIPPET match: %s", wrbuf_cstr(w_snippet)); + yaz_log(YLOG_DEBUG, "SNIPPET match: %s", wrbuf_cstr(w_snippet)); } return no; } -- 1.7.10.4