索引子系统的设计与实现
pre
post
lev
bucketed
tf 前序遍历编号 后续遍历编号 元素(结点)所属层 元素oneindex标识 语词在元素中的出现频率
表2-6 terms表
字段名 did term
off
pre
post 字段含义 语词所属文档编号 语词 语词在当前元素中的位置 前序遍历编号 后序遍历编号
在构建完XML映射树后,接着就将各项信息存储到上述的各个结构当中去,下面对上述存储XML倒排索引的结构做一些简要的说明:
oneindex:这个结构存储了XML文献集的全局信息,每一个路径唯一
的结点都会有一个唯一的编号,以供全局评分使用。
xpath:整个XML文献集中所有的元素的XPath路径都存储在这个结构
里,它配合oneindex以供全局评分使用。
documents,elements,features,terms:在XML映射树中表现为documents
包含elements,elements包含terms,features描述elements的特征,于是将这种关系直接保存在了这些结构中。
通过构建以上结构,XML文献的倒排索引就可以完整的构建了,接下来就是对这些以构建的倒排索引进行评分。首先介绍定义带有标签A的结点N下的所有语词的分数表示方法:
全文语词出现频率,ftf(t,n),即语词t在结点n下的所有文本中出现的
总次数。
标签出现频率,NA,即A为结点N的标签,标签为A的结点在整个文
集中出现的次数。
元素出现频率,efA(t),即标签为A,并且包含语词t的结点在整个文集中
出现的次数。
下面考虑如何计算A//“t1,t2,……,tm”的分数,其中A为标签名,“t1,t2,……,tm”表示可能在标签为A的子树中出现的语词。为了避免短元素里的少数语词的高频率问题,这里使用比较高级的Okapi BM25评分模型(源于文本文档的概率检索模型),以下是该模型的评分计算公式:
score(n,//A[t1,t2,……,tm]) = ∑ N efA(ti)+0.5 (k1+1)ftf(t1,n) log A (2-1) K+ftf(t,n)ef(t)+0.5i=11Ai m