一:
(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.