Snippets: multi words; less logging
authorAdam Dickmeiss <adam@indexdata.dk>
Tue, 11 Jun 2013 08:36:00 +0000 (10:36 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Tue, 11 Jun 2013 08:36:19 +0000 (10:36 +0200)
src/relevance.c

index 4d5b6e4..54bebb5 100644 (file)
@@ -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, "<match>");
+                }
+                break;
+            }
+        }
+        if (entries)
+        {
+            if (!highlight)
+            {
                 highlight = 1;
+                wrbuf_puts(w_snippet, "<match>");
+                no++;
+            }
+        }
+        else
+        {
+            if (highlight)
+            {
+                highlight = 0;
+                wrbuf_puts(w_snippet, "</match>");
+            }
         }
-        if (highlight)
-            wrbuf_puts(w_snippet, "<match>");
-
         wrbuf_xmlputs_n(w_snippet, words + org_start, org_len);
-        if (highlight)
-            wrbuf_puts(w_snippet, "</match>");
-        no += highlight;
     }
+    if (highlight)
+        wrbuf_puts(w_snippet, "</match>");
     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;
 }