首页> 中国专利> 一种基于节点与关键字覆盖关系的索引及其构建方法和查询方法

一种基于节点与关键字覆盖关系的索引及其构建方法和查询方法

摘要

本发明提供一种基于节点与关键字覆盖关系的索引,包括频率表、节点库、管辖集合库;频率表中记录可扩展标记语言文档中的每个关键字及关键字出现的频率;节点库记录关键字以及与关键字对应的全部节点编码,用来获得管辖关键字的全部节点;管辖集合库记录节点编码以及与节点编码对应的关键字,用来判断节点编码对应的节点是否管辖关键字。本发明还提供了一种基于节点与关键字覆盖关系的索引的构建方法及查询方法。本发明可以快速、高效地从可扩展标记语言文档中得到所有包含所有关键字的有意义的最小文档片段。

著录项

  • 公开/公告号CN102087666A

    专利类型发明专利

  • 公开/公告日2011-06-08

    原文格式PDF

  • 申请/专利权人 华东师范大学;

    申请/专利号CN201110032396.4

  • 发明设计人 王晓玲;王伟彦;周傲英;

    申请日2011-01-30

  • 分类号

  • 代理机构上海麦其知识产权代理事务所(普通合伙);

  • 代理人董红曼

  • 地址 200062 上海市普陀区中山北路3663号

  • 入库时间 2023-12-18 02:30:29

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-10-31

    授权

    授权

  • 2011-07-20

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20110130

    实质审查的生效

  • 2011-06-08

    公开

    公开

说明书

技术领域

本发明涉及数据库技术领域,尤其涉及一种基于节点与关键字覆盖关系的索引及其查询方法。

背景技术

可扩展标记语言(XML)是一种元语言,也是一种基于文本的标记语言。它是标准通用标记语言的一个子集。XML包含一组基本规则,任何人都可以利用这种规则创建针对特定应用领域的标记语言,这些标记并不描述信息的显示方式,而是信息本身。它允许标记元素类型、元素嵌套、以及元素之间的引用等。XML标准的制定大大促进了Web的发展,如今的XML已经成为Web上代表性的数据类型,并且广泛应用到商业、医疗、生物科学等众多领域。

搜索引擎的关键字检索模型已经在普通用户中十分流行,并且被视作相当有效的信息检索手段。关键字检索对于XML文档也很适用,它能让普通用户在不需要了解像XQuery这样复杂的查询语句,也不需要事先了解XML文档底层结构信息的情况下,就能快速方便得到感兴趣的内容。

如果采用传统的文本关键字检索技术,便忽视了XML文档中存在着的某些结构信息,这些信息往往包含了很多对用户很重要的语义信息。

在XML数据库中,关键字检索的采用也可以作为查询语言中的限制条件,帮助用户定位查询内容,因此查询的速度和质量直接决定了查询结果。

现有最快的Incremental Multiway-SLCA (IMS) algorithm算法只能有效处理深度不深的文档,随着文档的深度增加,其算法的效率下降很快;并且该算法使用的一个工作集的大小也会影响算法性能。

本发明克服现有技术的以上缺陷,提供一种基于节点与关键字覆盖关系的索引及其查询方法,可以快速、高效地将XML文档中得到所有包含所有关键字的有意义的最小文档片段。

发明内容

本发明的目的在于提出一种基于节点与关键字覆盖关系的索引及其查询方法,可以快速、高效地将XML文档中得到所有包含所有关键字的有意义的最小文档片段。

本发明提供一种基于节点与关键字覆盖关系的索引,包括频率表、节点库、管辖集合库。其中,频率表中记录可扩展标记语言文档中的每个关键字及该关键字出现的频率;节点库记录关键字以及与该关键字对应的全部节点编码,用来获得管辖该关键字的全部节点;管辖集合库记录节点编码以及与该节点编码对应的关键字,用来判断节点编码对应的节点是否管辖该关键字。

本发明中,当关键字出现在以一个节点为根节点的子树中时,由该节点管辖该关键字。

本发明中,记录在管辖集合库中的节点编码与所述关键字以键值对的形式储存。

本发明中的节点编码的最后一段为节点在可扩展标记语言文档按深度优先遍历时的序数。

本发明提供一种基于节点与关键字覆盖关系的索引的构建方法,包括如下步骤:

1)读取可扩展标记语言文档,并对文档中的每个节点构建节点编码;

2)判断节点管辖的关键字是否在频率表中:

当频率表已经包括该关键字时,将频率表中该关键字的频率加1;当频率表不包括该关键字时,将该关键字增加到频率表中,并将该关键字的频率设置为1;

3)判断节点管辖的关键字是否在节点库中:

当节点库已经包括该关键字时,将该关键字对应的节点编码增加到节点库中;当节点库中不包括该关键字时,将该关键字及其对应的节点编码增加到节点库中; 

4)将节点编码与关键字作为键值对增加到管辖集合库中,并得到祖先节点及其节点编码;

5)将祖先节点的节点编码与关键字作为键值对增加到管辖集合库中:

当该关键字为祖先节点管辖的关键字时,停止构建索引;

6)重复步骤1)至步骤5),直至遍历可扩展标记语言文档中的所有节点。

本发明还提供一种基于节点与关键字覆盖关系的索引的查询方法,包括如下步骤:

1)  构建工作集:

从频率表中获取所有关键字中频率最小的关键字,将频率最小的关键字对应的节点编码组合构建成工作集;

2)  确定最小公共祖先节点:

利用节点库获取工作集里的节点编码对应节点的最小公共祖先节点;利用管辖集合库获取剩余关键字对应节点的最小公共祖先节点;

3)  判断步骤2)中的最小公共祖先节点是否为真正的最小公共祖先节点:

如果是真正的最小公共祖先节点,就将最小公共祖先节点的节点编码作为结果输出;如果不是真正的最小公共祖先节点,则删除。

本发明提出的基于节点与关键字覆盖关系的索引的查询方法与XML文档的深度无关,并且能在比现有最快算法更短时间内完成关键字检索的任务。

本发明建立索引,在使用XML SAX解析器从头到尾读取XML文档的过程中,对遇到的每个节点都按照本发明中的节点编码方式进行编码,并且将节点编码和该节点管辖的关键字信息保存在DSP(Domination Set Pool)中。本发明中,每个节点便记录了以这个节点为根节点的子树包含的所有关键字,从而可以直接通过管辖集合库来检查该节点是否为最小公共祖先节点,而不再与深度相关。同时,本发明选择了出现频率最小的关键字所在的节点集作为工作集,确保工作集在常数大小内。本发明中的管辖集合库采用的是B+树,因此查询速度也很快。实验结果表明,本发明不仅解决了现有技术存在的问题,并且速度也优于现有技术。

本发明中的“XML文档”是指:XML文档被模式化为一个有向标签图G = (VGEG,                                                , laboidvalroot),叫做XML数据图。这里,VG是节点的集合。EG是边的集合,其中每条边表示一个元素的父子关系或者元素-数值关系。是XML文档中所有标签的集合。我们给出了三种映射函数,laboidvallab是映射VG中的一个节点到中的一个标签的函数,oid是映射VG中的一个节点到一个唯一标示符的函数,而val则是映射数据值到一个没有输出边的叶子节点上。最后rootVG中标记为ROOT的唯一的根节点。

本发明中的“最小公共祖先”是指:一个最小公共祖先节点的查询结果集应该满足如下要求:a)该节点的后代节点中包含所有查询语句中的关键字;b)这些节点的后代节点中没有满足(a)要求的节点。最小公共祖先节点所对应的XML文档片段是包含所有关键字的最小有意义文档片段。

节点与关键字的管辖关系(Domination)是本发明提出的一种新的关系。当一个关键字出现在以一个节点为根节点的子树中时,则称该节点管辖这个关键字。本发明中的管辖集合库DSP(Domination Set Pool)是一种存储了本发明节点编码与该节点管辖的关键字的key-value键值对的容器。

现有技术中,Dewey编码采用类似url地址的分段编码方式。Dewey编码的段数与该节点在XML树形结构所处的深度有关,处于第i层便有i段,根节点处在第一层。子节点的继承父节点的编码,在最后一层添加一个自己的编码。Dewey编码在最后一段是该节点作为父节点子节点的从左到右的序数。而本发明中的“节点编码”是将现有技术中的Dewey编码进行改进。本发明中的节点编码的最后一段是该节点在XML文档按深度优先遍历时的序数。

本发明基于节点与关键字覆盖关系的索引主要基于B+树和Hash Table进行建立的,该索引主要由3个部分组成:

1)频率表, Frequency Table (FT),是记录XML文档中每个关键字出现的频率,整张频率表FT最先存在磁盘上,在预处理阶段,将整张频率表FT读入内存,然后,每次查询的时候,通过使用频率表FT来确定查询语句里面出现频率最小的关键字。

2)节点库,Node Library (NL), 是一个基于磁盘的B+树结构。节点库中的key是所有XML文档中出现的关键字,节点库中的value是包含该关键字的对应的节点编码的链表。节点编码以升序排列。通过节点库可以快速获得包含某个关键字的所有节点。

3)管辖集合库,Domination Set Pool (DSP), 是整个索引的关键部分,也是一个基于磁盘的hash表结构。它记录了所有节点管辖的关键字的信息。如果一个节点管辖某个关键字,我们便将(节点编码,关键字)作为hash的入口,这样,我们便能快速得到节点与关键字是否有管辖关系。

本发明的优点在于,本发明索引是基于B+树和Hash Table建立,查询性能很好。FT和NL都是B+树结构,如果FT比较小的时候,可以全部载入内存,加速查询;如果FT很大,则也可采用基于磁盘的B+树,NL采用基于磁盘的B+树,管辖集合库采用的是Hash 表结构。XML文档解析方式采用的SAX解析方式,只需扫描一遍文档,且需要内存较少。通过管辖集合库只需在检查当前节点的索引信息即可知道该节点是否为公共祖先,与深度无关。使用FT选出的工作集大小属于常数级。

附图说明

图1为本发明中经过节点编码处理后的可扩展标记语言文档结构示意图;

图2是图1的可扩展标记语言文档对应的频率表;

图3是图1的可扩展标记语言文档对应的节点库;

图4是图1的可扩展标记语言文档对应的管辖集合库;

图5是本发明使用频率表查询过程的示意图;

图6是本发明使用节点库查询过程的示意图;

图7是本发明使用管辖集合库查询过程的示意图;

图8是本发明中最小公共祖先节点的判断过程的示意图。

具体实施方式

以下结合附图和实施例进一步详细阐述本发明。以下实施例并不是对本发明的限制。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中。

本实施例中基于节点与关键字覆盖关系的索引,包括频率表、节点库、管辖集合库。频率表中记录可扩展标记语言文档中的每个关键字及该关键字出现的频率;节点库记录关键字以及与该关键字对应的全部节点编码,用来获得管辖该关键字的全部节点;管辖集合库记录节点编码以及与该节点编码对应的关键字,用来判断节点编码对应的节点是否管辖该关键字。

其中,记录在管辖集合库中的节点编码与所述关键字以键值对的形式储存。当关键字出现在以一个节点为根节点的子树中时,则由该节点管辖该关键字。

本发明中的节点编码的最后一段为对应的节点在可扩展标记语言文档按深度优先遍历时的序数。

本实施例中基于节点与关键字覆盖关系的索引的构建方法为:

1)读取可扩展标记语言文档,并对文档中的每个节点构建节点编码;

2)判断所述节点管辖的关键字是否在所述频率表中:

当所述频率表已经包括所述关键字时,将所述频率表中所述关键字的频率加1;当所述频率表不包括所述关键字时,将所述关键字增加到频率表中,并将所述关键字的频率设置为1;

3)判断所述节点管辖的关键字是否在所述节点库中:

当所述节点库已经包括所述关键字时,将所述关键字对应的节点编码增加到节点库中;当所述节点库中不包括所述关键字时,将所述关键字及其对应的节点编码增加到节点库中; 

4)将所述节点编码与所述关键字作为键值对增加到管辖集合库中,并得到祖先节点及其节点编码;

5)将所述祖先节点的节点编码与所述关键字作为键值对增加到管辖集合库中:

当所述关键字为所述祖先节点管辖的关键字时,停止构建索引;

6)重复步骤1)至步骤5),直至遍历可扩展标记语言文档中的所有节点。

本实施例中索引的建立在文档解析时一起进行。采用SAX方式解析,XML文档的节点主要分为元素节点(Element Node)、属性节点(Attribute Node)和文本节点(Text Node),在每次到达XML文档一个新节点的时候,先对该节点进行编码获得节点编码,图1为本发明中经过节点编码处理后的可扩展标记语言文档结构示意图;图1用XML数据图的方式显示了英格兰顶级足球联盟的部分信息,节点中的文字表示元素的名称或者元素的内容,也就是文档中的关键字;节点中的数字代表元素对象标识oid,也就是节点编码,例如“Title”的编码是1.4.5.6;线代表元素间的父子关系;XML图中的叶子元素是具体的内容,也是关键字。

执行如下步骤增加该节点在索引中的信息:

1)对该节点的所有关键字都做如下处理,如果该关键字已经在频率表中,则对应的频率加1;如果没有,则新增该关键字的条目,并置为1。其结果如图2所示,当前情况下,关键字“Editor”的频率为1,关键字“Paper”的频率为3。

2)将该节点的节点编码增加到该节点包含的所有关键字在节点库的条目中,关键字为key,节点编码为value;如果不存在,则新建该条目。其结果如图3所示,图3是一棵典型的数据库B树索引,B树索引的每个节点表示一个索引项,该索引项包含两部分<键值,指针>,其中“键值”是需要查找的关键字。对于非叶子的索引项,“指针”只是起到了导航的作用;对于叶子节点,该索引项的指针域存放具体的值,“指针”指向该关键字所在的元素节点集合,此处元素节点集合里面存放的是元素编码的集合,例如,包含“Author”关键字的节点有3个,分别是“1.4.5.8”,“1.4.10.13”和“1.20.23”。

3)将该节点的编码与该节点包含的所有关键字作为键值对加到管辖集合库中,并且通过该节点的编码快速得到祖先节点的编码,然后,将所有祖先节点编码与这些关键字作为键值对加到管辖集合库,如遇到祖先节点包含该键值对,则停止,否则,一直进行到根节点。其结果如图4所示。

本实施例提供的基于节点与关键字覆盖关系的索引的查询方法,包括如下步骤:

1)构建工作集:

从频率表中获取所有关键字中频率最小的关键字,将所述频率最小的关键字对应的节点编码组合构建成工作集;

2)  确定最小公共祖先节点:

利用节点库获取所述工作集里的节点编码对应节点的最小公共祖先节点;利用管辖集合库获取剩余关键字对应节点的最小公共祖先节点;

3)  判断步骤2)中的最小公共祖先节点是否为真正的最小公共祖先节点:

如果是真正的最小公共祖先节点,就将最小公共祖先节点的节点编码作为结果输出;如果不是真正的最小公共祖先节点,则删除。

本实施例中的查询算法主要分为两块,第一块通过LimitedSLCA()算法得到可能的最小公共祖先,然后通过第二块HashSearch()来判断第一块产生的可能结果是否真的满足最小公共祖先的条件。

对于一个u节点,它的一个可能的最小公共祖先节点v应该满足三个条件:1)v是u的祖先节点;2)所有关键字必须被v所管辖;3)v没有子孙节点满足条件1和2。本实施例中运用LimitedSLCA()算法通过这三个条件,针对一个特定的节点,通过该节点的编码,然后用二分查找的方式,找到一些满足上述三个条件的节点。

本发明筛选节点采用如下引理:1)对两个给定节点的两个可能最小公共祖先节点u’和v’,如果这两个可能最小公共祖先节点的序号(将序号用函数pre(x)表示)满足pre(u’) ≥ pre(v’), 那么v’不是一个SLCA节点。2)给定两个节点的两个可能最小公共祖先节点u’和v’,如果有pre(u’) < pre(v’) 并且u’不是v’的祖先,那么u’是一个真正的SLCA节点。HashSearch()通过选择出现频率最小词所在的节点集作为工作集,对工作集中的每个节点调用LimitedSLCA()得到可能SLCA节点,然后通过上述两个定理,筛选出这些节点中真正的最小公共祖先节点,从而得到最终结果。

       一个查询可以通过如下几个步骤完成:

1)对输入的所有关键字先通过频率表获得频率最小的关键字对应的节点编码序列作为工作集。如图5所示,输入“John XRank”后,通过频率表得知“John”的频率为5,“XRank”的频率为4,则将“XRank”对应的编码作为工作集。

2)对这个工作集里的所有节点与剩余关键字调用LimitedSLCA()算法获得可能最小公共祖先,其中使用节点库和管辖集合库分别如图6、7所示。

由图6可见,关键字“XRank”被如下编码的节点所包含:(1)节点“1.4.5.6.7” ,(2)节点“1.4.10.15.16” ,(3)节点“1.4.10.15.17”和(4)节点“1.20.21.22”。

由图7可见,关键字“XRank”的管辖集合库是:(1)节点“1.4.5” ,(2)节点“1.4.10” ,(3)节点“1.4.10”和(4)节点“1.20”。

3)对步骤2)得到的每一个可能节点均使用所给引理通过Hashsearch()算法进行判断,确定是否为真的最小公共祖先节点。如图8所示。

由图8可见,对于图7展示的四个可能节点:节点“1.4.5” ,节点“1.4.10” ,节点“1.4.10”和节点“1.20”。分别调用Hashsearch()算法,判断是否是真正的最小公共祖先,如果是,就作为查询结果输出,如果不是最小公共祖先,则删除。本例中,节点“1.4.5” ,节点“1.4.10” ,和节点“1.20”是最小公共祖先节点,因此作为结果输出。

经本发明查询方法,其查询结果是图1中的节点“1.4.5” ,节点“1.4.10” ,和节点“1.20”。这样在节点与关键字覆盖关系的索引的基础上,实现了最小公共祖先的查询,减少了计算过程,提高了查询效率。通过对比国际上已有的最快算法,本发明方法的查询处理时间减少了30%-50%。

本发明基于节点与关键字覆盖关系的索引的维护分为插入与删除。

对于插入操作中,如果有改变了XML文档结构的深度的插入,所有基于dewey编码方式的索引,都必须重新编码插入处之后子孙节点的编码。为了保持编码的有序性,我们加入了子编码段,即在现有编码的段中用&符号标记子编码段的开始,例如,对在编码为1.3.5节点和编码为1.3.6间插入一个新的节点,我们可以编码为1.3.5&1,其中&符号后的段,为子编码段,表示这个编码的最后一段比5大,比6小,而且是第一个。编码后,增加其相应在频率表和节点库的信息,同时,更新该节点的所有祖先节点中DSP关于该节点的覆盖信息。

对于删除操作,最主要的耗时操作是在删除DSP中的信息,我们可以通过增加一个基于B+树的索引保存每个节点中关键字的频率信息,记为Node Frequency Table (NFT)。与频率表不一样的是,NFT的value是该节点覆盖的关键字出现的频率。这样,我们在判断是否删除某个节点中管辖集合库里条目时候,只需判断NFT中对应条目是否为0即可,不需要再访问这些节点的所有子节点。

综上所述仅为本发明的较佳实施例,并非用来限定本发明的实施范围。即凡依本发明申请专利范围的内容所作的等效变化与修饰,都应属于本发明的技术范畴。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号