-/* $Id: recgrs.c,v 1.11 2006-11-30 11:03:57 adam Exp $
+/* $Id: recgrs.c,v 1.12 2006-12-22 13:57:27 adam Exp $
Copyright (C) 1995-2006
Index Data ApS
}
+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);
}
}