访问主表的值(DISTANCE和SIZE)

时间:2015-12-04 16:38:12

标签: basex

我在BaseX数据库中存储了大量的数学公式作为Content MathML。为了加快使用作为XQuery表达式实现的不同搜索算法的查找,我想访问主表的值,尤其是PRE,DISTANCE和SIZE。计划是去掉所有提供子树总节点数量(SIZE)错误的子树。

PRE值可通过db:node-pre函数获得,并且正常工作。如何访问DISTANCE和SIZE值?我在文档中找不到方法。

1 个答案:

答案 0 :(得分:0)

简短的回答是:你没有,继续使用提供的API

如果您确实需要这些ID,请使用parent::node()following-sibling::node()[1]轴并查询其前值。以下等式保持:

  • PRE(.) = PRE(parent) + SIZE(parent)
  • PRE(following-sibling[1]) = PRE(.) + SIZE(.)

因此您可以通过重新排序这些方程式来在恒定时间内读取这些值。

答案很长:深入了解BaseX内部

你会接触核心(可能不应该,小猫可能会死!)。实现BaseX Java绑定以访问queryContext variable,并保持database context context,您可以查询data() reference

Data data = queryContext.context.data();

获得Data引用后,您可以访问多个函数来查询内部数据结构的值:

int Data.dist(int pre, int kind)
int Data.size(int pre, int kind)

其中kind is always 1 for element nodes

勇敢,注意你的脚步,你现在就离开安全的地方了!