X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Frelevance.c;h=08527aec06810451acf631fd1210ed81c791833d;hb=e3d8ed2a9688b50e22e71755d83984659879ecf3;hp=4d5b6e44d29a047f26a9a1fdf90660a39260f116;hpb=b22c4ae2c14eb5d2b991e6233cdea2a9fd7dcf6c;p=pazpar2-moved-to-github.git diff --git a/src/relevance.c b/src/relevance.c index 4d5b6e4..08527ae 100644 --- a/src/relevance.c +++ b/src/relevance.c @@ -89,37 +89,45 @@ 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 (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; }