-/* $Id: recgrs.c,v 1.10 2006-11-29 18:06:57 adam Exp $
- Copyright (C) 1995-2006
+/* $Id: recgrs.c,v 1.13 2007-01-15 15:10:17 adam Exp $
+ Copyright (C) 1995-2007
Index Data ApS
This file is part of the Zebra server.
res = 0;
/* looking for the attribute with a specified name */
for (attr = n->u.tag.attributes; attr; attr = attr->next) {
- yaz_log(YLOG_DEBUG," - attribute %s <-> %s", attname, attr->name );
-
if (!strcmp(attr->name, attname)) {
if (p->u.relation.op[0]) {
if (*p->u.relation.op != '=') {
yaz_log(YLOG_WARN, "predicate %s ignored", p->u.relation.name);
res = 1; break;
} else {
- yaz_log(YLOG_DEBUG," - value %s <-> %s",
- p->u.relation.value, attr->value );
if (!strcmp(attr->value, p->u.relation.value)) {
res = 1; break;
}
}
}
}
- yaz_log(YLOG_DEBUG, "return %d", res);
return res;
} else {
return 1;
backwards trough xpath location steps ... */
for (i = xpe->xpath_len - 1; i>0; i--)
{
- yaz_log(YLOG_DEBUG, "Checking step %d: %s on tag %s",
- i, xp[i].part, nn->u.tag.tag);
-
if (!d1_check_xpath_predicate(nn, xp[i].predicate))
{
- yaz_log(YLOG_DEBUG, " Predicates didn't match");
ok = 0;
break;
}
}
+static void index_staticrank(struct recExtractCtrl *p,
+ RecWord *wrd,
+ data1_absyn *absyn)
+{
+ const char *staticrank_index = data1_absyn_get_staticrank(absyn);
+
+ if (staticrank_index && !strcmp(wrd->index_name, staticrank_index))
+ {
+ char valz[20];
+ size_t len = wrd->term_len;
+
+ if (len > sizeof(valz)-1)
+ len = sizeof(valz)-1;
+ memcpy(valz, wrd->term_buf, len);
+ valz[len] = '\0';
+ p->staticrank = atozint(valz);
+ }
+}
+
static void index_xpath(struct source_parser *sp, data1_node *n,
struct recExtractCtrl *p,
int level, RecWord *wrd,
int termlist_only = 1;
data1_termlist *tl;
int xpdone = 0;
+
if (!n->root->u.root.absyn
||
n->root->u.root.absyn->xpath_indexing == DATA1_XPATH_INDEXING_ENABLE)
termlist_only = 0;
}
+
switch (n->which)
{
case DATA1N_data:
fputc ('\n', stdout);
}
else
+ {
(*p->tokenAdd)(&wrd_tl);
+ index_staticrank(p, &wrd_tl, n->root->u.root.absyn);
+ }
if (wrd_tl.seqno > max_seqno)
max_seqno = wrd_tl.seqno;
}
wrd->term_buf = xp->value;
wrd->term_len = strlen(xp->value);
(*p->tokenAdd)(wrd);
+ index_staticrank(p, wrd,
+ n->root->u.root.absyn);
}
}
}
{
wrd->index_type = *tlist->structure;
wrd->index_name = tlist->index_name;
+ index_staticrank(p, wrd, n->root->u.root.absyn);
(*p->tokenAdd)(wrd);
}
}