在XML数据库中高效的关键字搜索求SLCAs

来源:互联网 发布:程序员敲代码图片搞笑 编辑:程序博客网 时间:2024/04/23 20:31

一:

(1).首先了解什么是XML?

XML是Extensible Markup Language的缩写,是一种类HTML的可扩展标记语言,它的设计宗旨是传输数据,而不是显示数据,XML标签没有被预定义,可以自定义标签。

(2).XML与HTML的区别?

XML 被设计为传输和存储数据,其焦点是数据的内容。

HTML 被设计用来显示数据,其焦点是数据的外观。

HTML 旨在显示信息,而 XML 旨在传输信息。

(3).XML数据库是一种支持对XML格式文档进行存储和查询等操作的数据管理系统。

<lib = "YDDB">

    <au = "WY">

          <age>18</age>

    </au>

    <au = "ZCM">

           <age>17</age>

           <brother = "WY"></brother>

    </au>

</lib>

这就可以是一个XML文档,它是半结构化数据,可以解析成树模型:,我们对这种树模型编码,有两种方式。

第一种:

就是根节点编号为0,对节点的孩子先从0开始编号,最终编码为从根节点到该节点路径上编号组合。

第二种:

就是先进行先序遍历,对顶点编号,最终编码为从根节点到该节点路径上的编号组合。这种编码基础上还可以在编码前边加上一个编码长度,有利于求SLCA,例如age的编码为3.0.1.2以为0.1.2长度为3.

两种编码方式,第二种要好,因为第一种对一个给定编号的值不能确定到具体节点,比如给定编号1,我们不能确定是树中哪一个节点;而第二种方式对一个给定编号可以确定到具体,比如给定编号1,就是指的编码为0.1这个节点。

编码的过程就是对XML文档的解析过程,解析后为倒排索引。

sql关系数据库的索引是B+树,XML数据库的索引就是倒排索引。

XML数据查询有两种方式:

1.X query,这是一种类似sql查询语句的查询,虽然精度要高,但是需要用户掌握一定的查询语言。

2.XKQuery(关键字查询),这种查询适应广,对用户没专业要求,使用简单。

XML文档解析方式主要有两种:DOM和SAX。

二:

(1).应用背景?

关键字查询被应用在万维网中查询HTML文献。

(2).关键字查询返回什么?

返回的是一个结点集合,这些结点要么本身标签包含所有关键字,或者它的后代结点标签包含这些关键字。

(3).什么是SLCA结点?

SLCA是Smallest Lowest Common Ancestor的缩写,首先看下面这个图。


比如我们想要求John和Ben的关系,发布一个关键字查询(John,Ben).那么返回的结果是以结点(0.1.1,0.1.2,0.2.0.0)为根的最小子树。

我们首先求的是LCA,即先求最低公共祖先,它是关键字John和Ben编码的最长公共前缀所在的节点。

在这里SLCA和LCA的结果是一样的,因为所求到的节点集合中并没有存在祖先后代关系的结点对。

如果我们求到的LCA中有祖先后代关系的节点对存在,那么移除这些结点对中的祖先结点,剩下的就是SLCA结点了。

什么是ELCA结点?

是Exclusive Lowest Common Ancestor,排他的最低公共祖先结点。 

是在排除以它的后代结点为根的子树中所有关键字后,以它为根的子树仍包含所有查询关键字。(目前还没理解好)。

(4).存在的方法?

1.The Indexed Lookup Eager Algorithm(IL)

适用于关键字频率差异比较大的时候,主要利用的以下四个属性:

第一个属性:求的是一个关键字只在树中出现一次的情况,返回的是结点v与S(另一个关键字的所有编码按升序排列后的集合)中v的右匹配(即编码最小但又要大于等于v的编码的那个节点)的LCA以及v和v的左匹配的LCA,取其中最小的。descendant这个函数是返回两个参数中的那个后代结点,有一个为空时返回另一个。


第二个属性:就是查询多个关键字时,且第一个关键字在树中出现只有一个v时;其中的Si表示的同一关键字不同编号的结点按递增顺序排列后的集合;例如上边的John这个关键字,那么它相对应的Si为(0.1.0.0.0,0.1.1.1.0,0.1.2.0.0,0.2.0.0.0)。


第三个属性是移除祖先后代关系中的祖先结点


第四个属性是每个关键字在树中出现次数不止一个时


(2)Scan Eager Algorithm

这个方法适用于关键字频率变化不大的情况。它和前一个方法的主要区别是在求左右匹配时不同,实现是扫描关键字列表找到匹配。

(3)The Stack Algorithm

又叫DIL(The stack based sort-merge algorithm)基于栈的排序合并算法。

参考论文:Efficient Keyword Search for Smallest LCAs in XML Databases-SIGMOD-2005;

L. Guo, F. Shao, C. Botev, and J. Shanmugasundaram. XRANK: Ranked keyword search over XML documents. In SIGMOD, 2003.

1 0