projects
/
idzebra-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Happy new year
[idzebra-moved-to-github.git]
/
index
/
mod_dom.c
diff --git
a/index/mod_dom.c
b/index/mod_dom.c
index
95c8a06
..
e38a3c4
100644
(file)
--- a/
index/mod_dom.c
+++ b/
index/mod_dom.c
@@
-1,5
+1,5
@@
/* This file is part of the Zebra server.
/* 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
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
@@
-399,11
+399,11
@@
static int process_meta(struct filter_info *tinfo, xmlDocPtr doc, xmlNodePtr nod
if (ret == 0)
{
xmlDocPtr sub_doc =
if (ret == 0)
{
xmlDocPtr sub_doc =
- xmlParseMemory( wrbuf_buf(result), wrbuf_len(result));
+ xmlParseMemory(wrbuf_buf(result), wrbuf_len(result));
if (sub_doc)
{
xmlNodePtr t = xmlDocGetRootElement(sub_doc);
if (sub_doc)
{
xmlNodePtr t = xmlDocGetRootElement(sub_doc);
- xmlAddChild(node, xmlCopyNode(t, 1));
+ xmlReplaceNode(node, xmlCopyNode(t, 1));
xmlFreeDoc(sub_doc);
}
}
xmlFreeDoc(sub_doc);
}
}
@@
-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);
{
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)
{
/* 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;
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 */
/* actually indexing the text given */
+ recword->seqno = seqno_base;
recword->index_name = (const char *)index;
if (*type)
recword->index_type = (const char *) type;
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);
(extctr->tokenAdd)(recword);
+ if (seqno_max < recword->seqno)
+ seqno_max = recword->seqno;
+
/* eat whitespaces */
if (*look && ' ' == *look)
{
look++;
}
}
/* eat whitespaces */
if (*look && ' ' == *look)
{
look++;
}
}
+ recword->seqno = seqno_max;
}
xmlFree(text);
}
}
xmlFree(text);
}
@@
-1166,15
+1179,13
@@
static int convert_extract_doc(struct filter_info *tinfo,
{
xmlChar *buf_out;
int len_out;
{
xmlChar *buf_out;
int len_out;
+ xmlDocDumpMemory(doc, &buf_out, &len_out);
#if 0
FILE *outf = fopen("extract.xml", "w");
#if 0
FILE *outf = fopen("extract.xml", "w");
- xmlDocDumpMemory(doc, &buf_out, &len_out);
fwrite(buf_out, 1, len_out, outf);
fwrite(buf_out, 1, len_out, outf);
-#endif
- yaz_log(YLOG_LOG, "Extract Doc: %.*s", len_out, buf_out);
-#if 0
fclose(outf);
#endif
fclose(outf);
#endif
+ yaz_log(YLOG_LOG, "Extract Doc: %.*s", len_out, buf_out);
}
if (p->setStoreData)
}
if (p->setStoreData)