Happy new year
[idzebra-moved-to-github.git] / index / mod_dom.c
index ad97171..e38a3c4 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of the Zebra server.
-   Copyright (C) 1995-2008 Index Data
+   Copyright (C) 1994-2009 Index Data
 
 Zebra is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
@@ -813,10 +813,18 @@ static void index_value_of(struct filter_info *tinfo,
     {
         xmlChar *text = xmlNodeGetContent(node);
         size_t text_len = strlen((const char *)text);
-       
+        
         /* if there is no text, we do not need to proceed */
         if (text_len)
         {            
+            /* keep seqno base so that all text will have
+               identical seqno's for multiple fields , e.g
+               <z:index name="title:w any:w title:p">.. */
+            
+            zint seqno_base = recword->seqno;
+            zint seqno_max = recword->seqno;
+       
+
             const char *look = index_p;
             const char *bval;
             const char *eval;
@@ -864,6 +872,7 @@ static void index_value_of(struct filter_info *tinfo,
 
                 /* actually indexing the text given */
 
+                recword->seqno = seqno_base;
                 recword->index_name = (const char *)index;
                 if (*type)
                     recword->index_type = (const char *) type;
@@ -878,12 +887,16 @@ static void index_value_of(struct filter_info *tinfo,
                 
                 (extctr->tokenAdd)(recword);
 
+                if (seqno_max < recword->seqno)
+                    seqno_max = recword->seqno;
+
                 /* eat whitespaces */
                 if (*look && ' ' == *look)
                 {
                     look++;
                 } 
             }
+            recword->seqno = seqno_max;
         }
         xmlFree(text); 
     }
@@ -1166,15 +1179,13 @@ static int convert_extract_doc(struct filter_info *tinfo,
     {
         xmlChar *buf_out;
         int len_out;
+        xmlDocDumpMemory(doc, &buf_out, &len_out);
 #if 0 
         FILE *outf = fopen("extract.xml", "w");
-        xmlDocDumpMemory(doc, &buf_out, &len_out);
         fwrite(buf_out, 1, len_out, outf);
-#endif
-        yaz_log(YLOG_LOG, "Extract Doc: %.*s", len_out, buf_out);
-#if 0
         fclose(outf);
 #endif
+        yaz_log(YLOG_LOG, "Extract Doc: %.*s", len_out, buf_out);
     }
 
     if (p->setStoreData)