在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.
- 在XML数据库中高效的关键字搜索求SLCAs
- 类似百度的搜索提示框,数据库中查询关键字
- 在man中搜索指定章节的关键字
- 在一堆文本文件中搜索内容含关键字的文件
- 在自己的网页中嵌入Google搜索且使该搜索在指定的网址中进行关键字搜索
- 在数据库中查找关键字
- 在Dom4j中使用Xpath搜索xml的元素节点
- 实现在搜索结果页面中变色显示搜索关键字
- 在domino中搜索关键字时高亮显示搜索结果
- 在ASP.Net4.0中使用QueryExtender控件创建高效的搜索页面
- 截图留念,“万能数据库查询分析器”作为关键字在百度和谷歌上的海量搜索结果
- 如何在Kaggle中高效搜索数据集?
- 在Django query中减少搜索数据库的次数
- Access数据库中“所有记录中均未找到搜索关键字”的解决方法
- 在搜索引擎中搜索关键字得到的结果页数的获取技巧
- 处理列表中搜索的关键字变色
- linux中在某个目录下多个文件中搜索关键字
- 数据库模糊搜索时,关键字中有%号,怎么办?
- 第四十二天 BitmapView(蒙版,或模拟给图片打马赛克)
- poj3255
- 网络配置
- access vba打开另一个数据库并关闭当前数据库的代码
- 因果图小例子
- 在XML数据库中高效的关键字搜索求SLCAs
- Bash shell 快捷键
- iOS数据请求之post异步同步
- 网络图可视化工具
- c、c++重难点
- Java中throws与throw的区别
- 如何通过Intent启动一个已经安装好的APP
- 色彩三要素
- C语言之可重入函数 && 不可重入函数