法律状态公告日
法律状态信息
法律状态
2016-08-10
未缴年费专利权终止 IPC(主分类):G06F17/30 授权公告日:20120620 终止日期:20150621 申请日:20100621
专利权的终止
2012-06-20
授权
授权
2010-11-03
实质审查的生效 IPC(主分类):G06F17/30 申请日:20100621
实质审查的生效
2010-09-15
公开
公开
技术领域
本发明涉及一种XML文档二级索引结构,属于数据检索领域。
背景技术
自1998年诞生以来,XML文档现广泛应用于互联网,数据库等领域,已经成为互联网上数据交换和集成的语言标准。随着XML文档的大量涌现,如何快速的从大规模XML文档中寻找出满足用户需求的信息成为信息检索以及数据库领域的一个研究热点。
XML信息检索可分为两大类:关键词检索和“关键词+结构”检索。由W3C颁布的XML检索标准XPath和XQuery是“关键词+结构”检索的代表,“关键词+结构”检索在为用户准确表达其查询需求方面提供了有效的描述手段,从而能获得高质量的查询结果。但是“关键词+结构”检索要求用户掌握相关的查询语言,并且对XML文档的结构信息有所了解,从而限制了这种检索方式在实际中的应用范围。为了提供对XML数据库的查询支持,面向XML数据库的查询语言XQL也被应用在许多XML数据库中。无论是XPath和XQuery,还是XQL,都要求用户知道文档的内部结构并且需要熟悉这些查询语言的基本语法,这对于普通用户来说是不能接受的也是没有必要的。
关键词检索一种经过实践证明且取得巨大成功的检索方式,是在传统搜索引擎中被广泛采用的检索手段。在传统搜索引擎的影响下,普通互联网用户现在已经习惯于关键词检索方式,因为关键词检索简单易用,能迅速被普通用户所掌握。因此,XML关键词检索比“关键词+结构”检索更具有现实应用意义。XML关键词检索也因此成为了XML信息检索领域的研究重点。
XML关键词检索即用户以关键词作为表达查询的手段对XML文档(集)进行检索的模式。由于XML文档是包含层次结构信息的,而关键词检索只能模糊的表达用户的查询语义,如何通过关键词检索,充分利用XML文档内部的结构信息,来为用户提供精确的检索服务就是一件非常有现实意义且具有极大挑战性的事情。
目前,在XML关键词检索中一个比较的核心的问题是,如何有效保存XML文档中的层次结构信息到索引系统中,使索引系统具有较高的空间效率并且能支持高效的检索算法。一种常见的方法是对XML文档中的XML元素进行编码,并且建立从关键词到元素的倒排索引,Dewey编码是目前最流行且较为高效的一种XML元素编码方法,Dewey编码把XML文档看成一颗有序树,杜威编码的定义如下:
T为一个XML文档对应的有序树,且R为树T的根,对于树中任意节点N,其儿子节点分别为N1,N2...Nn,那么对T中节点进行杜威编码的方法为:
(1)R的杜威编码为0。
(2)对于节点N的子节点从左至右依次为N1,N2...Nn,若其父节点的杜威编码为M,则这n个子节点的杜威编码分别为M.0,M.1,M.2...M.n。(M.i,“.”是一个编码分隔符)。
(3)按照规则(1)(2)对T中节点递归编码,直至把所有节点编码完毕。
附图2是对附图1中的XML文档中元素进行编码后对应的有序树,在附图2中,<Proceedings>是树中的根节点,因此其Dewey编码为‘0’,<paper>节点是<Proceedings>的子节点,根据Dewey编码定义中的规则(2),左边<paper>节点的编号为‘0.0’,右边<paper>节点的编号则为‘0.1’。根据类似的规则,<institution>节点为<paper>(0.0)节点的第二个子节点,因此其编码为‘0.0.1’,<authors>节点为<paper>(0.1)节点的第二个子节点,因此其编码为‘0.1.1’。
Dewey编码是一种能有效保存XML文档内部结构的编码方法。它采取了局部编码策略,通过重复保存父节点的编码信息从而达到保存树的层次结构信息的目的。通过这种重复保存父节点编码的方式来保存XML文档的层次结构信息给Dewey编码带来了两个潜在的不足。
首先,Dewey编码可能导致索引空间的冗余。由于Dewey编码通过重复保存父节点的编码来实现对XML文档层次结构的保存,这种重复保存直接导致的一个事实是:节点Dewey编码的长度与节点在对应有序树中的深度成正比。例如,在附图2中,节点<institution>的深度为3,其Dewey编码‘0.0.1’的长度也为3,而“Yu Xu”所在节点的深度为6,其Dewey编码‘0.0.11.0.0’的长度也为6。这也说明了Dewey编码的空间效率会随着XML文档内元素平均深度的增加而下降。如果一个XML文档有N个元素(节点),节点的平均深度为L,那么Dewey编码的空间效率为O(NL)。
其次,Dewey编码可能导致关键词检索算法的效率低下。比较两个Dewey编码的大小操作的时间复杂度为O(N),N为Dewey编码的长度。而比较操作是很多XML关键词检索算法的原子操作(比如栈算法,Scan Eager等),对于大规模的XML文档集,这种O(N)级别的原子操作将严重影响检索算法的性能。
基于Dewey编码的倒排索引技术是目前XML检索中应用比较成熟,也是应用最广泛的一种索引技术。Dewey倒排索引是以杜威编码为基础的一种倒排索引技术,其主要数据结构为有序词典和杜威倒排表,有序词典用于存储XML文档出现的关键词,而对每一个关键词,都对应一个Dewey倒排表,用于存储该关键词所在元素的基本信息,比如元素的Dewey编码,元素的长度等。
附图3是Dewey倒排表的一个例子,图中左侧的列表为关键词词典,一共包括n个关键词,右侧为每个关键词对应的倒排表,倒排表中存储的信息包括关键词所在元素的Dewey编码,XML文档的URL地址,以及该元素的长度。
基于Dewey编码的倒排索引虽然是一种比较高效的索引结构,但是它容易带来的一个问题就是索引空间冗余。由于它是建立在XML元素的粒度上,在一篇文档中,包含某个关键词的元素有很多。对于一个关键词K,假定在文档D中有N个不同元素包含K,假定关键词对应的普通文本属性长为L1,关键词对应的半结构文本属性长为L2,那么存储关键词K的索引所需空间为(L1+L2)*N。事实上,关键词对应的普通文本属性,在这N条索引记录中都是一样的,因为这N个元素都属于同一个XML文档,也就是说,对于关键词的普通文本属性,重复存储了N-1次,使索引空间增加了L1*(N-1)的空间代价。
Dewey倒排索引还容易导致的一个问题是:使检索算法处理无效的元素。XML关键词检索的一个基本条件是,关键词所得结果包含用户所有的关键词,由于XML元素返回的是XML元素,也就是以XML元素为根的子树应该包含所有的关键词。在XML文档集中,当用户提交一个查询时,有很定文档只包含这个查询中的部分关键词,那么,这些文档里面的元素肯定也不会包含所有关键词,由于Dewey倒排索引建立在元素的粒度上,这些文档中的元素也都会被检索算法进行处理,而对这些元素的处理是没有意义的,因此Dewey倒排编码可能导致检索算法处理很多的无效元素。
发明内容
为解决基于Dewey编码索引空间效率不高以及可能导致检索算法时间效率低下的问题,本发明提出一种新的XML元素编码方式:LAF(Layer order And Father numbering)编码,LAF编码的长度与元素在XML树中的深度无关。在LAF编码的基础上,本发明提出了一种新的索引结构,即基于LAF编码的二级索引,二级索引充分考虑XML文档的二重属性(指XML文档既具备普通文本文档的属性,同时也具备半结构化文档的结构特性。普通文本属性指一股文档共有的属性,比如文本的地址,文本的长度,文本的类型等。半结构文档属性指半结构文档特有的属性,比如元素的Dewey编码,LAF编码,元素的长度等),将XML文档两种不同属性分别存储在不同级别的索引中,通过指针将这两级索引关联起来。
LAF编码是Level order And Father numbering的缩写。与Dewey编码不同的是,LAF编码基于一种全局的编码策略,即树的层次遍历(即宽度优先遍历)。层次遍历使XML树中每一个节点都有唯一的层次遍历序号。
LAF编码定义:对于一颗XML树中的节点,其LAF编码由三部分组成:节点的层次遍历序号;其父节点的层次遍历序号;该节点所在的深度。
由于根节点无父节点,其父节点的层次遍历序号设为-1。
与Dewey编码类似,LAF编码可以采用长为3的向量来存储,分别表示LAF编码的3个部分。为了方便阅读,将LAF编码表示成如下形式,LAF编码的3个部分用‘.’分隔开:
节点层次遍历序号.父节点层次遍历序号.节点的深度
本发明提出基于LAF编码的二级索引结构,这是一种新型的XML索引结构,如图5所示,在该索引结构中,XML文档的普通文本属性被存储在第一级索引中,而半结构属性被存储在第二级中,两级索引间通过指针关联起来。
二级索引除了关键词词典外,倒排索引由两部分组成,即存储普通文本属性的第一级索引和存储半结构属性的第二级索引。第一级索引存储的信息包括文档号,文档URL地址,XML元素的层次遍历序号列表等。第二级索引存储每个XML文档对应的LAF表。
LAF表指的是,一篇XML文档中所有的LAF编码按照层次遍历序号从小到大组成的有序编码集合。每一篇XML文档对应唯一的LAF编码表。
本发明提出的基于LAF编码的XML文档二级索引技术,不仅能避免传统索引方法可能带来的冗余问题,同时也能支持较为高效的检索算法,减少检索算法对无效元素的处理。
附图说明
图1是XML文档示例;
图2是Dewey编码示例;
图3是Dewey倒排索引;
图4是树的层次遍历示例;
图5是基于LAF编码二层索引结构;
图6是一个LAF编码示例;
图7是一个LAF表示例;
图8是一个二级索引示例;
具体实施方式
下面通过实例对本发明做进一步的说明,但是需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
图4给出了一个层次遍历树的例子,其层次遍历结果为A,B,C,D,E,F,G,H,I,J,他们对应的层次遍历序号依次为0,1,2,3,4,5,6,7,8,9。
图1中XML文档使用LAF编码的结果如附图6所示。对于根节点<Proceedings>,其层次遍历序号为0,其父节点的层次遍历序号为-1,其深度为1,因此其LAF编码为0.-1.1,而<institution>节点的层次遍历序号为4,其父节点<paper>的层次遍历序号为1,它的深度为3,因此,其LAF编码为4.1.3。同理可知其他各节点的LAF编码。
对于附图4中的XML树,其对应的LAF表如附图7所示。在该树中,一共有10个不同的节点,对应XML文档中10个不同的元素,每一个XML元素对应一个LAF编码,因此,在该LAF表中一共有10个不同的LAF编码。每一个LAF编码被存储成一个长度为3的一维向量。
附图8是二层索引的一个简单示例。假定附图1中XML文档的编号为1000,地址为http://xxx,从附图5可以得知,包含关键词Yu的不同元素的层次遍历序号为:16,19和21,而包含关键词Yannis的元素的不同元素的层次遍历序号为:12,20和22。因此,Yu对应的一层索引的层序编码列表为16,19和21,而Yannis对应的层序编码列表为12,20和22。层序编码列表中的层次遍历序号分别唯一对于应二层索引LAF表中的LAF编码。比如12对应的LAF编码为12.5.3,而21对应的LAF编码为21.17.5。
机译: 测试集生成方法,用于生成例如相关的相关XML文档,包括生成文档,例如通过将一组约束应用于文档来使用另一种语言的XML文档
机译: Internet网络中扩展标记语言XML文档的处理,在该网络中,用户选择一种标记语言,并显示其功能列表,并且XML文档与Schema XML语言相关联
机译: 一种两层N-gram反向索引结构及其索引构建,查询处理和索引派生的方法