首页> 中国专利> 基于结构摘要的XML关键字检索方法

基于结构摘要的XML关键字检索方法

摘要

本发明提供了一种XML关键字检索方法,包括以下步骤:a.对一个XML树进行深度优先遍历,建立所述XML树的结构摘要树,并对所述结构摘要树的所有节点以及所述XML树的所有叶子节点分别进行编码,以得到各个叶子节点的编码和各个结构摘要树节点的编码;b.对所述各个叶子节点以及各个结构摘要树节点,以其各自的节点名称或文本值为键,以其各自的编码为值,建立倒排索引;c.由所述结构摘要树中计算出最小最低公共祖先节点;d.基于计算出的最小最低公共祖先节点,构造出检索返回结果。

著录项

  • 公开/公告号CN102043802A

    专利类型发明专利

  • 公开/公告日2011-05-04

    原文格式PDF

  • 申请/专利权人 上海飞机制造有限公司;复旦大学;

    申请/专利号CN200910197333.7

  • 发明设计人 潘凌云;杨卫东;方非;

    申请日2009-10-16

  • 分类号G06F17/30;

  • 代理机构北京市金杜律师事务所;

  • 代理人郑立柱

  • 地址 200436 上海市场中路3115号

  • 入库时间 2023-12-18 02:05:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-09-25

    授权

    授权

  • 2011-09-21

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

    实质审查的生效

  • 2011-05-04

    公开

    公开

说明书

版权声明

本专利申请文件中包含受版权保护的内容,版权所有者对其它单位或个人在本专利申请由中国国家知识产权局公开之后对该内容进行的翻印没有异议,但保留就其它单位或个人针对该内容所进行的其它行为主张版权的所有权利。

技术领域

本发明涉及关键字检索,尤其涉及XML关键字检索。

背景技术

关键字检索因易于使用而广泛应用于信息检索领域。使用关键字检索,用户无须掌握复杂的查询语言,也无需了解XML文档的模式,便可以找到他们感兴趣的内容。由于XML已经成为构造网页和企业间进行信息描述和交换的标准,针对XML文档所进行的关键字检索(下称XML关键词检索)因而具有极其广阔的应用前景。

目前,与XML关键字检索相关的大部分研究都基于最低公共祖先(LCA),其中最具代表性的是由Yu Xu,Yannis Papakonstantinou在SIGMOD’2005上发表的Efficient Keyword Search for Smallest LCAs in XML Databases一文中的XKSearch中提出的最小最低公共祖先(SLCA),其中,以SLCA节点为根节点所返回的子树被认为是对用户有意义的。XKSearch中基于对LCA的计算来计算SLCA节点。LCA的最简便的计算方法是对文档中的元素和文本节点进行Dewey编码,然后对Dewey编码的结果计算最小公共前缀来得到LCA。XRANK、MLCA、XSEarch、VLCA等本质上与SLCA类似,不再赘述。XSeek、MaxMatch则探讨了如何在SLCA的基础上组织返回结果。关于XKSearch,可详见http://portal.acm.org/citation.cfm?id=1066217

发明内容

本发明的申请人意识到,使用关键字来对XML进行检索,有以下关键性问题需要解决:

1.如何准确地定义关键字检索的语义

鉴于关键字的模糊检索的本质,其语义的定义显得十分重要。

2.如何建立合适高效的检索机制

Dewey编码的编码方式决定了对文档建立的索引中存在着许多的冗余和重复信息,使得文档的索引通常比文档还要大许多。图1a示出了对一个XML片段进行Dewey编码的例子。基于Dewey编码,可以方便直观地确定两个节点间的相互关系,并能迅速确定节点在树中的位置。Dewey编码的缺陷是存在较多的冗余信息,例如,图1(a)所示的XML树中的叶子节点Bob(0.0.0.0)的Dewey编码已经包含了该节点所有的路径信息,而author(0.0.0)又重复了对这个路径的编码。

3.如何让检索能够返回合适的结果

目前,对于以SLCA节点作为关键字检索的语义,返回的结果难以有效的组织。

基于对上述技术问题的认识,在本发明中,提出了一种基于结构摘要的XML关键字检索方法,其具体包括以下方面:

1)提供了XKSS索引建立方法,结合结构摘要技术来优化XML关键字检索的索引大小;

2)提供了在XKSS索引基础上计算SLCA的方法;

3)提供了利用XKSS来构造最小连通树的方法。

其中,结构摘要(structure summary)是一种由XML数据得到的对XML结构的近似描述,它以XML树结构中节点的路径信息为基础,对XML文档树的节点和路径进行约简,通常应用于对xPath等查询的路径进行快速查找匹配。它的特点是所有重复的节点和路径只在该结构摘要里出现一次,换言之,在结构摘要中不会存在两个具有相同路径的节点。对于一个XML文档而言,结构摘要是很小的,例如,图1a所示的XML文档的结构摘要如图1b所示。

XML小枝模式查询本质上是具有针对XML文档结构和内容的选择谓词的查询。将一组小枝模式与随时到达的XML文档进行匹配是XML流数据处理的核心操作。

在结构摘要索引方面也有许多相关的研究,其中,DataGuide最早被提出并应用于Stanford大学的Lore项目中。DataGuide的基本思想是将NFA转换为DFA的方法应用到归约XML树上的相同路径中。DataGuide是一个比较粗略的结构摘要,其中可能包含实际数据中并不存在的路径信息,所以,后来又陆续提出了一些基于双似(bisimilar)等价概念的结构摘要,如1-index和xSKETCH,以及后来放松双似的条件得到k阶双似的A(k)-indexes。

根据本发明的一个方面,提供了一种能高效地实现XML关键字检索的方法,其中,本发明所提供的用于XML关键字检索的XML索引记为XKSS,上述方法包括以下步骤:

a.将传统的使用Dewey编码建立索引的方法进行扩展,对XML树的叶子节点和结构节点分开进行编码;

b.将编码后的数据按值和标签分别建立倒排索引;

c.基于XKSS索引,对SLCA的计算算法进行改进,从而利用XKSS索引计算出SLCA节点。

附图说明

通过以下结合附图对本发明至少一个非限定性实施例所作的描述,本发明的其它特点、优势将会显得更为清楚和明显。其中:

图1a示出了对一个XML片段进行Dewey编码的例子;

图1b示出了图1a所示XML文档的结构摘要;

图2a-2b示出了根据本发明的一个具体实施例所建立起来的结构摘要树和编码;

图3a-3c示出了一个根据SLCA建立最小连通树的过程;

图4示出了本发明与现有技术在索引大小上的实验比较结果;

图5示出了本发明与现有技术在算法执行时间上的实验比较结果,其中,标签含关键字;

图6示出了本发明与现有技术在算法执行时间上的实验比较结果,其中,标签不含关键字。

在附图中,相同或相似的附图标记表示相同或相似的技术特征。

具体实施方式

以下将结合具体实例来对本发明进行详述,下文总体上分为两个部分,第一部分主要涉及XML关键字检索的语义定义,第二部分则涉及上述的XKSS索引的建立以及在此基础上的SLCA计算。

一、XML关键字检索的语义

前已述及,XML关键字检索的一个重要问题是确定关键字检索的语义,即确定用户对XML的哪些部分感兴趣。这样,可以避免返回过多与关键字无关的信息。当前的研究主要以LCA为基础来确定XML关键字检索的语义,而其中最普遍采用的是XKSearch提出的SLCA概念,这些概念的详细定义将通过下文的描述而变得更加清楚。

通常,XML文档会被表示为树的模型,对于一个XML树T,其中的每个节点v都会对应于XML文档中的元素。一般地,假定文本节点只出现在叶子节点中,对文档结构的描述则通常出现在非叶子节点,也称语义节点。为了方便描述,本文中用Label(v)表示节点v的标签名,Text(v)表示节点v的文本值,Depth(v)表示v在树T中的深度。如果用Dewey编码表示,一个节点的Dewey编码的长度就是该节点的深度。如果在树T中的节点v是w的祖先,则表示为

两个节点的LCA是指这两个节点的公共祖先中深度最大的节点。

给定两个节点a,b的Dewey编码,这两个Dewey编码的最大前缀就是a,b的LCA节点的Dewey编码。

给定一系列关键字w1,w2...wk,对于其中的每个关键字wi,在XML树T中能够找到一个与之对应的节点集合Si,这个节点集合Si中的每个节点都包含wi

本文中,称LCA(S1,S2...Sk)为关键字的LCA节点集合。

同样,对于节点集合S1,S2...Sk,当且仅当以下条件同时满足时,v∈SLCA(S1,S2...Sk):

1.V∈LCA(S1,S2...Sk);

2.不存在任何的w满足w∈LCA(S1,S2...Sk);以及

3.

给定一系列关键字w1,w2…wk和XML树T,w1,w2…wk的应答子树是指T的一个包含每个关键字至少一个实例的子树。w1,w2…wk的最小应答子树满足以下条件:

1.本身是一个应答子树;

2.该子树自身的各子树中,没有一个是应答子树。

给定一系列关键字w1,w2…wk和XML树T,w1,w2…wk的最小连通树是指以SLCA(w1,w2…wk)为根节点,只包含从根节点到w1,w2…wk的路径上所有节点的树。

二、XKSS索引的建立和SLCA的计算

在实际的XML数据库中,索引量通常会十分的庞大。而XKSS通过引进结构摘要的概念,采用对XML文档的叶子节点单独进行编码,其他节点使用结构摘要树的方式对其结构进行编码,大幅度地约简了XML中相同的路径信息,减少了需要编码的节点数量。所以整个文档树的编码被分为两部分:文本节点编码和结构摘要树编码。最后再对两种编码分别建立索引。该方法能够大幅度压缩索引大小的主要原因就在于使用结构摘要树的编码信息来代替文档中的所有非叶子节点的编码,而结构摘要树的大小是远远小于XML树本身。

XKSS索引的建立和使用分别在两个阶段进行:预处理(pre-process)阶段和运行时(run-time)阶段。

预处理阶段,通过对XML文档进行深度优先遍历,使用Dewey编码的方式对节点进行编码,同时建立文档的结构摘要树,结构摘要树也用Dewey编码表示,两部分编码在一次遍历中同时完成。最后对文档中的叶子文本节点以及结构摘要树中的节点的Dewey编码以节点值为键分别建立倒排索引。

运行时阶段,用户提交关键字查询,通过倒排索引找出包含关键字的节点,利用SLCA算法计算出SLCA节点的Dewey编码值,由于索引的只是叶子节点,所以并不能根据SLCA的Dewey编码得到真正的SLCA节点。这时候可以利用SLCA的Dewey编码和结构摘要索引找出实际的SLCA节点。

XKSS分别对XML文档树中的文本节点和该文档的结构摘要树进行索引。结构摘要的建立需要对XML文档进行遍历,可以利用对XML文档进行Dewey编码的同时建立起XML文档的结构摘要。

最后建立起来的结构摘要树和编码如图2a-2b所示。其中,图2a是对文本节点的编码,索引时只对包含文本值的节点保留编码并索引。每个节点v的编码采用(Dcode,id)的形式,其中,Dcode是节点v在XML树中的Dewey编码,id代表节点v的双亲节点的标识,通过该标识可以在结构摘要树中找到v的双亲节点的位置。图2b则是图2a中文档的结构摘要树,也同样使用Dewey编码,不同的是结构摘要树的根节点被编码为1,于是,所有节点的编码都以1开头,从而实现与原文档树的编码的区分。图中用圆点标出的节点是文本节点的双亲节点,同样用(Dcode,id)的形式编码,其中,Dcode是该节点在结构摘要树中的Dewey编码,id代表该节点的一个标识,这个标识与文档树中文本节点的标识相对应,通过这个标识,文本节点可以找到自己的双亲节点。

对XML文档进行Dewey编码的方法十分直观,建立结构摘要树的方法可以参照建立DataGuide的算法。无论是对文档进行Dewey编码还是建立结构摘要树都需要对文档进行一次遍历,所以我们将这两个过程结合在一次文档遍历中完成。完成了对整个XML树以及这棵的结构摘要树的编码之后,接着对XML树中的文本叶子节点和结构摘要树中的节点以节点名称或者文本值为键,Dewey编码为值建立倒排索引,而XML树中的所有非叶子节点的编码则不会进行索引。使用结构摘要树中的节点代替了原来XML树中的所有非叶子节点进行索引,大大的减少了进行索引的节点数量,这也是XKSS索引远小于比原始索引方法的重要原因。

上述建立XKSS索引的算法还可以表示为:

算法1:XKSS索引的建立

使用结构摘要对索引进行压缩,可以有效的减少索引的大小。然而索引中结构摘要树代替了整个文档的结构信息,所以必须能从结构摘要中计算出SLCA节点,并且构造出最终的返回结果。

用户提出的关键字,可能是对文本节点的查询例如Bob,也可能代表的是用户希望查询的语义例如author。对于文本节点,已经有了完整的索引,可以直接采用SLCA算法计算;而对于语义节点,由于本例中只保留了其结构信息,因此在本发明的一个实施例中,提出了基于XKSS的SLCA计算算法,实验也证明了该算法的正确性。

首先,给定关键字w1,w2…wk,wk+1,wk+2…wj,本例中,将关键字分为两类,关键字w1,w2…wk出现在文本节点中,是对文本节点的查询,关键字wk+1,wk+2…wj出现在语义节点中,是对查询语义的补充。

本例中,上述两类关键字间被分开处理,对于w1,w2…wk,从索引中找到包含这些关键字的节点集S1,S2...Sk,然后通过SLCA算法计算得到所有S1,S2...Sk的SLCA节点的Dewey编码,这些Dewey编码并不能在索引里找到相应的节点,因为中间节点并不会被索引,所以需要利用结构摘要找到真正的SLCA节点。

下面给出的函数可以由一个SLCA节点的Dewey编码得到它在结构摘要树中的编码和名称。如果关键字没有出现在语义节点中,则SLCA就已经被计算出来了。如果有关键字出现在了语义节点中,那么还需要进行进一步的计算,归纳上述情况,提出了算法SSB-SLCA,以下还将得到详述。

上述计算SLCA的算法还可以表示为(该算法的描述整体移入本说明书的下一页):

算法2:基于XKSS索引计算SLCA

如果以最小应答子树为结果,则在最坏的情况下可能会返回整个XML文档,其中以SLCA为根节点。本例中,讨论如果利用结构摘要来得到最小连通树作为返回结果。

由之前的工作可以得到关键字的SLCA节点集在结构摘要树中的Dewey编码,利用这个Dewey编码可以采用bottom-up算法构造出关键字的最小连通子树。

算法3:应用XKSS索引构造最小连通树

输入:SLCA节点v’和包含关键字的节点v1,v2…vk

输出:以v’为根节点的一个最小连通树Ta

步骤1:将v1,v2…vk作为叶子节点加入Ta

步骤2:对于v1,v2…vk中的每一个节点vi,找到结构摘要树中id为vi.id的节点vi’,作为vi的双亲节点加入Ta,同样在结构摘要树中找到vi’的双亲节点,并将其加入Ta中作为vi’在Ta中的双亲节点,直到SLCA节点v’加入Ta

步骤3:根据每个vi的Dewey编码为信息将Ta中的节点拆分成满足每个vi的Dewey编码的路径信息。

同样以一个例子来说明算法的执行过程。同样在图2a所示XML文档中提出关键字为『James,Editorial,Bob,SignalML』,那么经过算法2的计算,将会得到这样的结论:SLCA节点为图2b中的dblp(0)节点。执行算法3,Ta将会如图3所示的过程被建立。

首先执行上述步骤1,得到图3a的结果,所有包含关键字的叶子节点被加入Ta。然后执行上述步骤2,根据结构摘要树的结构,自底向上的将节点加入Ta。由于结构摘要树中的节点是经过合并的,所以还需要根据叶子节点的Dewey编码将其中实际节点展开。例如图3b中的Bob和SignalML的Dewey编码的前两位是0.0,而James和Editorial的Dewey编码的前两位是0.1000,这说明在树的第2层,Bob和SignalML拥有同一个祖先,而James和Editorial拥有同一个祖先,于是将树中第2层的article节点一分为二,分别作为Bob,SignalML以及James,Editorial的祖先节点。

通过执行上述步骤3,将得到图3c所示的结果。

为了证明本发明相比于现有技术的种种优势,申请人特别进行了实验比较,具体结果如图4-6所示。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在所附权利要求的范围内做出各种变形或修改。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号