一种关键字检索方法、装置及系统的制作方法

文档序号:6516377阅读:225来源:国知局
一种关键字检索方法、装置及系统的制作方法
【专利摘要】本发明适用于计算机检索【技术领域】,提供了一种关键字检索方法、装置及系统,所述方法包括:接收输入的关键字检索请求,请求中包括目标文件的ID和关键字检索语句;根据目标文件的ID读取文件信息;对目标文件进行分块;在各分块上运行Mapper程序,以由Mapper程序根据关键字检索语句以及文件信息查询得到各分块对应的SCKS、SLCA节点,并生成子树SCKS’;发送SLCA节点与SCKS’至Reduce设备,以由Reduce设备根据SLCA节点与SCKS’计算得到检索结果。本发明,通过MapReduce对海量XML文件进行分布式并行运算,从而可以支持大数据量的关键字检索。
【专利说明】一种关键字检索方法、装置及系统
【技术领域】
[0001]本发明属于计算机检索【技术领域】,尤其涉及一种关键字检索方法、装置及系统。
【背景技术】
[0002]检索是计算机应用领域的基础核心功能。随着XML技术的广泛应用,如何在海量XML数据集中进行高效检索成为难题。
[0003] XML 路径语言(XML Path Language, XPath)/XML 查询(XML Query, XQuery)是由万维网联盟(World Wide Web Consortium,W3C)制定的一种功能完善的XML查询语言。它利用事先掌握的目标文档的层次结构(Schema),使用路径表达式进行查询。然而,在应用于海量XML数据集时,如何完整的获得所有文档的层次结构是个挑战,这导致一些复杂的查询无法实现。即使掌握了所有文档的层次结构,但由于文档复杂的层次结构,将导致查询语句不易编写、查询算法难以优化等问题。
[0004]基于关键字的XML查询方法(XML Keyword Search)通过对XML文档的有向标签树进行运算,试图返回最紧致的关键字片断树。它不需要用户事先掌握XML文档的层次结构,有着友好的用户接口。
[0005]目前,XML关键字查询方法大多基于最低公共祖先(Lowest Common Ancestor,LCA)技术,进一步研究还有最小最低公共祖先(Smallest Lowest Common Ancestor, SLCA)等。
[0006]设表达式v〈av’表示节点V是V’的祖先节点,V ≤ay’表示节点V是节点V’的祖先节点或是节点V’。则LCA和SLCA的形式定义如下:
[0007]LCA:给定m个节点V1, v2,...Vnri, Vm,假如节点w对每个1≤i≤m)均满足w ≤a Vi ;而不存在结点u对每个Vi (1≤i≤m)均满足u≤Ji,且w〈au,则称节点w为节点V1, V2,...Vm-1, Vm 的 LCA 节点,记作 W=LCA (V1, V2,, vm)。
[0008]SLCA:给定η个LCA节点W1, w2,...Wlri, wn,假如节点s是SLCA节点,则不存在Wi (1≤ i ≤ j),使得 WiCaS,记作 s e SLCA (W1, w2,...Wn^1, wn)。
[0009]如图1所示,图1为XML检索领域常用的测试文档,一个文献数据库结构图(以下简称dblp)。这是个带Dewey编码的XML层次结构图。从图1可知,dblp的根节点为{O, dblp},其中O为Dewey编码,dblp为标签名。则当以关键字“Ling”和“Wei ”进行查询时(可表示为 Q=[Ling, Wei]),查询到的 LCA 节点集为[{0.0, article}, {0.1, article}, {O,dblp}],查询到的 SLCA 节点集为[{0.0, article}, {0.1,article}]。可以看出,基于 SLCA的XML关键字查询算法最终将返回以SLCA节点为根节点的最紧凑的XML数据片断。显然,相比较于LCA,SLCA返回的数据片断更符合用户需求。
[0010]然而,基于SLCA的XML文档的关键字检索(以下简称为SLCA检索)存在以下几个问题:
[0011]I)、面对海量的XML数据时,SLCA检索无法直接运算。
[0012]2)、SLCA检索返回的数据片断并不一定符合用户需求。例如,当用户对图1的dblp进行关键字检索Q=[Ling],期望得到作者为Ling的所有文章时,
[0013]检索得到的SLCA节点集为[{0.0.1,author}, {0.1.0,title}],显然这并不符合用户需求。
[0014]3)、SLCA检索不支持复杂的带有语义的检索。例如,上文提到的检索Q= [Ling, Wei],当用户发起该检索,期望得到作者Ling和Wei合作写的文章。而该检索得到的SLCA节点包含了节点{0.1,article},而实际上该文章是由作者Wei独立完成的。

【发明内容】

[0015]本发明实施例提供了一种关键字检索方法、装置及系统,旨在解决现有的SLCA检索方法无法检索海量的XML数据,并且检索结果不准确的问题。
[0016]一方面,提供一种关键字检索方法,所述方法包括:
[0017]接收输入的关键字检索请求,所述请求中包括目标文件的ID和关键字检索语句;
[0018]根据所述目标文件的ID读取文件信息;
[0019]对所述目标文件进行分块;
[0020]在各分块上运行Mapper程序,以由所述Mapper程序根据所述关键字检索语句以及所述文件信息查询得到各分块对应的结构完整关键字子树SCKS、最小最低公共祖先SLCA节点,并从所述SCKS中移除以所述SLCA节点为根节点的数据片段,生成子树SCKS’ ;
[0021]发送所述SLCA节点与所述子树SCKS ’至Reduce设备,以由所述Reduce设备根据所述SLCA节点与所述子树SCKS’计算得到检索结果。
[0022]进一步地,所述文件信息包括所述目标文件的所有节点信息,所述节点信息包括节点的唯一标识、节点的标签名、节点的类型,所述节点的类型包括实体节点、属性节点、连接节点和值节点。
[0023]进一步地,所述在各分块上运行Mapper程序,根据所述关键字检索语句以及所述文件信息查询得到各分块对应的结构完整关键字子树SCKS、最小最低公共祖先SLCA节点包括:
[0024]根据所述节点信息在各分块中查找符合所述关键字检索语句的值节点,生成值节点集;
[0025]根据所述节点信息对所述值节点集中的值节点依次进行补全操作,得到各分块对应的结构完整关键字子树SCKS ;
[0026]查找各分块对应的结构完整关键字子树SCKS中的各个值节点的公共祖先,将所述公共祖先作为最低公共祖先LCA节点;
[0027]比较各LCA节点的祖孙关系,将辈分最小的LCA节点作为最小最低公共祖先SLCA节点。
[0028]进一步地,所述根据所述节点信息对所述值节点集中的值节点依次进行补全操作,得到各分块对应的结构完整关键字子树SCKS包括:
[0029]步骤1、定位至所述值节点集中的第一个值节点;
[0030]步骤2、读取所述值节点的唯一标识;
[0031]步骤3、根据所述唯一标识,向上补全,将补全后的结果存入对应的结构完整关键字子树SCKS中;[0032]步骤4、定位至所述值节点集中的下一个值节点,并递归执行步骤2至3,直至最后一个值节点完成补全操作。
[0033]进一步地,所述Reduce设备根据所述SLCA节点与所述子树SCKS’计算得到检索结果包括:
[0034]所述Reduce设备调用Reduce程序;
[0035]所述Reduce程序保存接收到的SLCA节点,并将该SLCA节点记为Pl ;
[0036]所述Reduce程序合并各分块对应的SCKS ’,生成SCKS ” ;
[0037]所述Reduce程序对所述SCKS”进行SLCA运算,得到SLCA节点,并记该节点为P2 ;
[0038]所述Reduce程序合并所述Pl和P2,得到最终的检索结果。
[0039]进一步地,关键字检索语句Q满足Q —Tn I Ts I QTn I QTs,其中,_>为“定义为”,I为“或”,Ts是包含语义的关键字子语句,Tn是不属于Ts的T,T是不含空字符的非空字符串,Ts包括τ > τ|τ〈τ|τ>τ|τ〈=τ|τ>=τ|τ:τ-τ,>为“包含”,τ:τ-τ表示一个设定的区间范围。
[0040]另一方面,提供一种关键字检索装置,所述装置包括:
[0041]检索请求接收单元,用于接收输入的关键字检索请求,所述请求中包括目标文件的ID和关键字检索语句;
[0042]文件信息获取单元,用于根据所述目标文件的ID读取文件信息;
[0043]分块单元,用于对所述目标文件进行分块;
[0044]SCKS和SLCA节点生成单元,用于在各分块上运行Mapper程序,以由所述Mapper程序根据所述关键字检索语句以及所述文件信息查询得到各分块对应的结构完整关键字子树SCKS、最小最低公共祖先SLCA节点,并从所述SCKS中移除以所述SLCA节点为根节点的数据片段,生成子树SCKS’ ;
[0045]发送单元,用于发送所述SLCA节点与所述子树SCKS’至Reduce设备,以由所述Reduce设备根据所述SLCA节点与所述子树SCKS’计算得到检索结果。
[0046]进一步地,所述文件信息包括所述目标文件的所有节点信息,所述节点信息包括节点的唯一标识、节点的标签名、节点的类型,所述节点的类型包括实体节点、属性节点、连接节点和值节点。
[0047]进一步地,SCKS和SLCA节点生成单元包括:
[0048]值节点集生成模块,用于根据所述节点信息在各分块中查找符合所述关键字检索语句的值节点,生成值节点集;
[0049]SCKS生成模块,用于根据所述节点信息对所述值节点集中的值节点依次进行补全操作,得到各分块对应的结构完整关键字子树SCKS ;
[0050]LCA节点获取模块,用于查找各分块对应的结构完整关键字子树SCKS中的各个值节点的公共祖先,将所述公共祖先作为最低公共祖先LCA节点;
[0051 ] SLCA节点获取模块,用于比较各LCA节点的祖孙关系,将辈分最小的LCA节点作为最小最低公共祖先SLCA节点。
[0052]进一步地,所述SCKS生成模块包括:
[0053]第一值节点定位子模块,用于定位至所述值节点集中的第一个值节点;
[0054]唯一标识获取子模块,用于读取所述值节点的唯一标识;
[0055]补全操作子模块,用于根据所述唯一标识,向上补全,将补全后的结果存入对应的结构完整关键字子树SCKS中;
[0056]第二值节点定位子模块,用于定位至所述值节点集中的下一个值节点,并递归调用所述唯一标识获取子模块和所述补全操作子模块,直至最后一个值节点完成补全操作。
[0057]进一步地,关键字检索语句Q满足Q —Tn I Ts I QTn I QTs,其中,_>为“定义为”,I为“或”,Ts是包含语义的关键字子语句,Tn是不属于Ts的T,T是不含空字符的非空字符串,Ts包括τ > t|t〈t|t>t|t〈=t|t>=t|t:t-t,>S包含,τ:τ-τ表示一个设定的区间范围。
[0058]又一方面 ,提供一种关键字检索系统,所述关键字检索系统是基于云计算框架MapReduce的云计算环境平台中的系统,所述关键字检索系统包括存储有Mapper程序的Map设备和存储有Reduce程序的Reduce设备,所述Map设备包括如上所述的述关键字检索
>J-U ρ?α
衣装置。 O
[0059]在本发明实施例,通过MapReduce对海量XML文件进行分布式并行运算,从而可以支持大数据量的关键字检索。本实施例的方法具有0(η)的运算效率,实现了高效、准确的海量XML数据集上的关键字检索。
【专利附图】

【附图说明】
[0060]图1是XML检索领域常用的测试文档的示意图;
[0061]图2是本发明实施例一提供的关键字检索方法的实现流程图;
[0062]图3是将图1中所示的测试文档作为目标文件,对该测试文档进行分块后的各分块的不意图;
[0063]图4是实施例二提供的以关键字检索语句Q为author=Ling year>=2000进行查询时得到的SCKS’’的结构示意图;
[0064]图5是本发明实施例五提供的关键字检索装置的结构框图;
[0065]图6是本发明实施例六提供的关键字检索系统的结构框图。
【具体实施方式】
[0066]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0067]在本发明实施例中,Map设备接收到关键字检索请求后,先根据请求中包括的目标文件的ID读取文件信息;再对目标文件进行分块;然后在各分块上运行Mapper程序,根据请求中包括的关键字检索语句以及读取的文件信息查询得到各分块对应的结构完整关键字子树SCKS、最小最低公共祖先SLCA节点,并从SCKS中移除以SLCA节点为根节点的数据片段,生成子树SCKS’ ;最后发送SLCA节点与生成的子树SCKS’至Reduce设备,由Reduce设备根据SLCA节点与子树SCKS’计算得到检索结果。这是一种基于MapReduce的分布式架构,可以对海量XML文件进行分布式并行运算,从而可以支持大数据量的关键字检索。
[0068]以下结合具体实施例对本发明的实现进行详细描述:
[0069]实施例一
[0070]图2示出了本发明实施例一提供的关键字检索方法的实现流程,该方法是基于云计算框架MapReduce的分布式的计算应用,数据源(即XML数据集,数据源集中包括至少一个XML文件)是分布式存储在云计算环境平台中的,具体为存储在分布式文件系统(Distributed File System, DFS)中,该 DFS 可以存储在 Map 设备中,Map 设备和 Reduce 设备分别是云计算平台中的Mapper程序和Reduce程序所在的计算机,即集群中的节点,其中Map设备用于存储Mapper程序,Reduce设备用于存储Reduce程序,本实施例以Map设备侧为例进行说明,详述如下:
[0071]在步骤S201中,接收输入的关键字检索请求,请求中包括目标文件的ID和关键字检索语句。
[0072]本发明实施例中,Map设备可以接收用户输入的关键字检索请求,该请求中包括所要查询的XML数据集中的目标文件的ID以及查询时所要使用的关键字检索语句。
[0073]其中,关键字检索请求中可以包括至少两个目标文件的ID和至少两个关键字检索语句,以并行发起至少两个对单个XML文件的检索,为了描述方便,本实施例中以对一个XML文件进行检索为例来进行说明。
[0074]其中,在本实施例中,为了使检索结果更为准确,对关键字检索语句的语法进行了扩充。
[0075]具体的,传统的关键字检索语句的语法如下所示:
[0076]T->不含空字符的非空字符串;
[0077]Q->T|QT。
[0078]其中,T为一个关键字,Q为关键字检索语句,_>为“定义为”,I为“或”。显然,Q可以是一个T或递归的至少两个T组成。
[0079]扩充后的关键字检索语句的语法如下所示:
[0080]T->不含空字符的非空字符串;
[0081]Ts — τ > τ|τ<τ|τ>τ|τ<=τ|τ>=τ|τ:τ-τ;
[0082]Τη_>不属于八的丁;
[0083]q —Tn I Ts I QTn Iqts。
[0084]其中,Ts是包含语义的关键字子语句,>为“包含”,Τ:Τ-Τ表示某一个设定的区间范围。例如:
[0085](I)例一:“author=Ling year>=2000”,检索作者为 Ling,发表在 2000年及以后的记录。
[0086](2)例二 ,title > Ling year: 1990-2013”,检索标题包含 Ling,发表在 2010 年至2013年的记录。
[0087](3)例三:“Ling Wei”:不包含语义的关键字查询,将不分析语义。
[0088]在步骤S202中,根据目标文件的ID读取文件信息。
[0089]本发明实施例中,对存储在DFS中的XML文件可按以下规则创建模型,生成各个XML文件的文件信息。
[0090]DFS提供的一个XML文件的文件信息可用一个5元组表示D= {Fileld, StartOffset, Length, V, v0}。其中:
[0091](I)、Fileld:DFS 中文档 D 的唯一标识 ID ;
[0092](2)、StartOffset =DFS中文档D的物理起始位置,其格式为SNode_0ffset。其中SNode是DFS用存储节点,Offset是物理磁盘偏移量;[0093](3)、Length:XML 文档的长度;
[0094](4)、V:文档D所有节点的集合,包括文档D中的所有节点信息,节点V的结构可用5元组表示:
[0095]vi={DeweyCode, TagName, StartOffset, Length, Type}
[0096]其中,vi为文档D的第i个节点;
[0097]DeweyCode是Dewey编码,是一个节点的唯一标识ID,具体可参见图1。其编码规则为:
[0098](I)、vO 的 DeweyCode 为 O ;
[0099](2)、宽度优先遍历D的过程中,如果节点V是节点u的第i个孩子节点,则V的Dewey编码为Dewey (U).1-Ι,其中Dewey(U)表示节点u的Dewey编码。
[0100]TagName为节点的标签名;
[0101]StartOffset为该标签的起始偏移量;
[0102]Length为长度,是结束标签与StartOffset的差值;
[0103]Type为节点类型,是实体、属性、连接和值节点中的一种。
[0104]vO:文档D的根节点,vO e V。
[0105]具体的,各种节点类型的定义如下:
[0106]实体节点:可以重复出现在父节点中,子节点可以是实体、属性、连接和值节点。
[0107]属性节点:父节点只能是实体节点,可以出现多次,子节点只能是值节点。
[0108]连接节点:既不属于实体节点,也不属于属性节点,子节点只能是实体节点。
[0109]值节点:父节点只能是属性节点,只能出现一次,没有子节点。
[0110]在步骤S203中,对目标文件进行分块。
[0111]本发明实施例中,对目标文件进行分块。以图1中的目标文件为例,分块后的各分块如图3所示,分块后的目标文件包括Blockl、Block2和Block3三个分块。具体如何对目标文件进行分块,本实施例中不做限制。另外,步骤S203可以在步骤S201之前执行,也可以在步骤S202之前执行,不限制于放在步骤S202之后执行。
[0112]在步骤S204中,在各分块上运行Mapper程序,根据关键字检索语句以及文件信息查询得到各分块对应的结构完整关键字子树SCKS、最小最低公共祖先SLCA节点,并从SCKS中移除以SLCA节点为根节点的数据片段,生成子树SCKS’。
[0113]本发明实施例中,可以通过以下步骤得到各分块对应的结构完整关键字子树SCKS:
[0114]步骤1、根据节点信息在各分块中查找符合关键字检索语句的值节点,生成值节点集。
[0115]步骤2、根据节点信息对值节点集中的值节点依次进行补全操作,得到各分块对应的结构完整关键字子树SCKS。
[0116]具体的,步骤2又包括以下步骤:
[0117]步骤2a、定位至值节点集中的第一个值节点;
[0118]步骤2b、读取该值节点的唯一标识;
[0119]步骤2c、根据该唯一标识,向上补全,将补全后的结果存入对应的结构完整关键字子树SCKS中;[0120]步骤2d、定位至值节点集中的下一个值节点,并递归执行步骤2b至2c,直至最后一个值节点完成补全操作。
[0121]具体的,得到各分块对应的结构完整关键字子树SCKS后,可以对各分块对应的结构完整关键字子树SCKS进行SLCA运算得到各分块对应的SLCA节点,详细的获取最小最低公共祖先SLCA节点的步骤包括:
[0122]步骤11、查找各分块对应的结构完整关键字子树SCKS中的各个值节点的公共祖先,将该公共祖先作为最低公共祖先LCA节点;
[0123]步骤12、比较各LCA节点的祖孙关系,将辈分最小的LCA节点作为最小最低公共祖先SLCA节点。
[0124]具体的,得到各分块对应的结构完整关键字子树SCKS、最小最低公共祖先SLCA节点后,可以从SCKS中移除以SLCA节点为根节点的数据片段,生成子树SCKS’。
[0125]在步骤S205中,发送SLCA节点与子树SCKS’至Reduce设备,以由述Reduce设备根据SLCA节点与子树SCKS’计算得到检索结果。
[0126]在本发明实施例中,Map设备将计算得到的各分块对应的结构完整关键字子树SCKS以及子树SCKS’发送给Reduce设备,Reduce设备调用Reduce程序,由Reduce程序先保存接收到的SLCA节点,并将该SLCA节点记为Pl,再合并各分块对应的SCKS’,生成SCKS”,再对该SCKS”进行SLCA运算,得到SLCA节点,并记该节点为P2,最后合并Pl和P2,得到最终的检索结果。
[0127]本实施例,通过MapReduce对海量XML文件进行分布式并行运算,从而可以支持大数据量的关键字检索;另外,通过确定各节点的类型,从而得到更符合用户需求的节点;还有通过扩展查询条件,从而实现支持语义识别的关键字检索,使得检索结果更加精确。本实施例的方法具有0(n)的运算效率,实现了高效、准确的海量XML数据集上的关键字检索。
[0128]本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如R0M/RAM、磁盘或光盘等。
[0129]实施例二
[0130]本发明实施例二提供描述了以关键字检索语句Q为author=Ling year>=2000进行查询时的过程,详述如下:
[0131]第一步:Mapper从Blockl,Block2和Block3查询出符合检索关键字检索语句的值节点。
[0132]Map设备从分块开始的物理偏移出发遍历图3中所示的每个分块数据,直到读到分块结尾符。当读到标签author时,若该节点为属性节点,则尝试读取其下的值节点,并判断该值节点的值是否为Ling ;当读到标签year时,若该节点为属性节点,则尝试读取其下的值节点,并判断该值节点的值是否>=2000。最终从各分块Block查询出的值节点如下所示:
[0133]Blockl 的值节点集为[{0.0.1.0, Ling}];
[0134]Block2 的值节点集为[{0.0.3.0, 2011}, {0.1.2.0,2000}];
[0135]Block3的值节点集为口。
[0136]第二步、Map设备对各值节点集中的值节点进行补全操作,得到Blockl、Block2和Block3对应的结构完整关键字子树分别为:
[0137]SCKSl= [ {O, dblp}, {0.0, article}, {0.0.1, author}, {0.0.1.0, Ling}];
[0138]SCKS2= [ {0, dblp}, {0.0, article}, {0.1, article}, {0.0.3, year}, {0.1.2, year},{0.0.3.0,2011},{0.1.2.0,2000}];
[0139]SCKS3= 口。
[0140]第三步、Map设备对SCKS1、SCKS2和SCKS3进行SLCA运算,计算得到SCKSI和SCKS2中的SLCA节点,并发送SCKS’和SLCA节点至Reduce设备。
[0141]在本实施例中,SCKS1、SCKS2的SLCA节点均不存在,所以SCKS’ =SCKS0
[0142]第四步、Reduce设备合并各分块对应的SCKS ’,形成SCKS ’ ’,并对SCKS ’ ’进行SLCA运算,得到SLCA节点记为P2。
[0143]由于SLCA节点不存在,则Pl=口。
[0144]本实施例中,合并的SCKS’ ’如图4所示。对SCKS’ ’进行的SLCA运算将分别从[{0.0.1.0, Ling}, {0.0.3.0, 2011}]和[{0.0.1.0, Ling}, {0.1.2.0, 2000}]开始往上查询最低公共祖先。易知,最低公共祖先LCA节点为{0.0,article}和{0,dblp}。所以SLCA节点为{0.0, article},记为 P2。
[0145]第五步、合并Pl和P2,得最终结果,即{0.0, article}。
[0146]本实施例,以关键字检索语句Q为author=Ling year>=2000进行查询,其中包括语义的检索,查询的结果正好是用户所需要的结果,检索结果准确率高。
[0147]实施例三
[0148]本发明实施例三提供描述了以关键字检索语句Q为title > Lingyear: 1990-2013进行查询时的过程,详述如下:
[0149]第一步、Map设备从Blockl, Block2和Block3查询出符合检索关键字检索语句的值节点。
[0150]Blockl的值节点集为口 ;
[0151]Block2 的值节点集为[{0.0.3.0,2011},{0.1.0.0,Ling’ swar}, {0.1.2.0, 2000}];
[0152]Block3的值节点集为口。
[0153]第二步、得到Blockl, Block2和Block3对应的结构完整关键字子树。
[0154]SCKSl= [] ο
[0155]SCKS2=[ {O, dblp}, {0.0, article}, {0.1, article}, {0.0.3, year}, {0.1.0, title}, {0.1.2, year}, {0.0.3.0, 2011}, {0.1.0.0, Ling,s war}, {0.1.2.0, 2000}]。
[0156]SCKS3= 口。
[0157]第三步、计算得到SCKS2中的SLCA节点{0.1, article}。
[0158]第四步、从SCKS2中移除以SLCA节点{0.1, article}的数据片段,得到SCKS2’ = [{O, dblp}, {0.0, article}, {0.0.3, year}, {0.0.3.0,2011}],并发送 SCKS2’和 SLCA 节点至Reduce 设备。
[0159]第五步、Reduce设备将SLCA节点记为Pl,本实施例中Pl= [ {0.1, article}]。
[0160]第六步、合并各分块的SCKS’,形成SCKS’ ’。并对SCKS’ ’进行SLCA运算,得到SLCA节点,并将该节点记为P2。[0161]本实施例中,P2=[]
[0162]第七步、合并Pl和P2,得最终结果,即{0.1,article}。
[0163]本实施例,以关键字检索语句Q为title > Ling year: 1990-2013进行查询,其中包括语义的检索,相比实施例二是包含了支持范围的关键字检索。
[0164]实施例四
[0165]本发明实施例四提供描述了以关键字检索语句Q为Ling Wei进行查询时的过程,详述如下:
[0166]第一步、Map设备从Blockl, Block2和Block3查询出符合检索关键字检索语句的值节点。
[0167]Blockl 的值节点集为[{0.0.1.0,Ling},{0.0.2.0, Wei}]; [0168]Block2 的值节点集为[{0.1.0.0,Ling’ s war}, {0.1.1.0, Wei}];
[0169]Block3 的值节点集为[{0.2.l.0’Wei}]。
[0170]第二步、得到Blockl,Block2和Block3对应的结构完整关键字子树。SCKS1=[{0,dblp}, {0.0, article}, {0.0.1, author}, {0.0.2, author}, {0.0.1.0, Ling}, {0.0.2.0, We
i}]。
[0171]SCKS2=[ {0, dblp}, {0.1, article}, {0.1.0, title}, {0.1.1, author}, {0.1.0.0, Ling,s war}, {0.1.1.0, Wei}]。
[0172]SCKS3=[ {0, dblp}, {0.2, proceedings}, {0.2.1, editor} {0.2.1.0, Wei} ] ?
[0173]第三步、计算得到SCKSl的SLCA节点{0.0, article}, SCKS2中的SLCA节点{0.1,article},SCKS3 的 SLCA 节点不存在。
[0174]第四步、从SCKSl中移除以SLCA节点0.0,article}的数据片段,得到SCKS1’ = [ {
O,dblp},{0.0.1, author},{0.0.2,author},{0.0.1.0,Ling},{0.0.2.0,Wei}],从 SCKS2 中移除以SLCA节点{0.l,article}为根结点的数据片段,得到SCKS2’ = [ {0,dblp},{0.1.0, title},{0.1.1, author},{0.1.0.0,Ling,s war},{0.1.1.0,Wei} ],SCKS3,=SCKS3,并发送各分块对应的SCKS’、和SLCA节点至Reduce设备。
[0175]第五步、Reduce设备将各分块对应的结构完整关键字子树的SLCA节点记为Pl,本实施例中 Pl=[ {0.0, article}, {0.1, article}]。
[0176]第六步、合并各分块的SCKS’,形成SCKS’ ’。并对SCKS’ ’进行SLCA运算,得到SLCA节点,并将该节点记为P2。
[0177]本实施例中,P2=[]。
[0178]第七步、合并Pl 和 P2,得最终结果,即[{0.0, article}, {0.1,article}]。
[0179]本实施例,以关键字检索语句Q为Ling Wei进行查询,这是一种不包含语义的检索,在查询时,将不分析语义。
[0180]实施例五
[0181]图5示出了本发明实施例五提供的关键字检索装置的具体结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。该关键字检索装置5是内置于Map设备中的软件单元、硬件单元或者软硬件结合的单元,该关键字检索装置5包括:检索请求接收单元51、文件信息获取单元52、分块单元53、SCKS和SLCA节点生成单元54和发送单元55。
[0182]其中,检索请求接收单元51,用于接收输入的关键字检索请求,该请求中包括目标文件的ID和关键字检索语句;
[0183]文件信息获取单元52,用于根据目标文件的ID读取文件信息;
[0184]分块单元53,用于对目标文件进行分块;
[0185]SCKS和SLCA节点生成单元54,用于在各分块上运行Mapper程序,以由Mapper程序根据关键字检索语句以及文件信息查询得到各分块对应的结构完整关键字子树SCKS、最小最低公共祖先SLCA节点,并从SCKS中移除以SLCA节点为根节点的数据片段,生成子树SCKS,;
[0186]发送单元55,用于发送SLCA节点与子树SCKS’至Reduce设备,以由Reduce设备根据SLCA节点与子树SCKS’计算得到检索结果。
[0187]具体的,文件信息包括目标文件的所有节点信息,节点信息包括节点的唯一标识、节点的标签名、节点的类型,节点的类型包括实体节点、属性节点、连接节点和值节点。
[0188]具体的,SCKS和SLCA节点生成单元54包括:
[0189]值节点集生成模块,用于根据节点信息在各分块中查找符合关键字检索语句的值节点,生成值节点集;
[0190]SCKS生成模块,用于根据节点信息对值节点集中的值节点依次进行补全操作,得到各分块对应的结构完整关键字子树SCKS ;
[0191]LCA节点获取模块,用于查找各分块对应的结构完整关键字子树SCKS中的各个值节点的公共祖先,将该公共祖先作为最低公共祖先LCA节点;
[0192]SLCA节点获取模块,用于比较各LCA节点的祖孙关系,将辈分最小的LCA节点作为最小最低公共祖先SLCA节点。
[0193]具体的,所述SCKS生成模块包括:
[0194]第一值节点定位子模块,用于定位至值节点集中的第一个值节点;
[0195]唯一标识获取子模块,用于读取值节点的唯一标识;
[0196]补全操作子模块,用于根据读取到的唯一标识,向上补全,将补全后的结果存入对应的结构完整关键字子树SCKS中;
[0197]第二值节点定位子模块,用于定位至值节点集中的下一个值节点,并递归调用唯一标识获取子模块和补全操作子模块,直至最后一个值节点完成补全操作。
[0198]具体的,关键字检索语句Q满足Q —Tn|Ts|QTn|QTs,其中,_>为“定义为”,|为“或”,Ts是包含语义的关键字子语句,Tn是不属于Ts的T,T是不含空字符的非空字符串,Ts包括τ > t|t〈t|t>t|t〈=t|t>=t|t:t-t,>S包含,τ:τ-τ 表示一个设定的区间范围。
[0199]本实施例,通过MapReduce对海量XML文件进行分布式并行运算,从而可以支持大数据量的关键字检索;另外,通过确定各节点的类型,从而得到更符合用户需求的节点;还有通过扩展查询条件,从而实现支持语义识别的关键字检索,使得检索结果更加精确。本实施例的方法具有0(η)的运算效率,实现了高效、准确的海量XML数据集上的关键字检索。
[0200]本发明实施例提供的关键字检索装置可以应用在前述对应的方法实施例一中,详情参见上述实施例一的描述,在此不再赘述。
[0201]实施例六
[0202]图6示出了本发明实施例六提供的关键字检索系统的具体结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。该关键字检索系统是基于云计算框架MapReduce的云计算环境平台中的系统,该关键字检索系统6包括存储有Mapper程序的Map设备61和存储有Reduce程序的Reduce设备62,其中Map设备和Reduce设备的数目至少为一个,Map设备和Reduce设备分别是云计算平台中的Mapper程序和Reduce程序所在的计算机,即集群中的节点。
[0203]本实施例,通过MapReduce对海量XML文件进行分布式并行运算,从而可以支持大数据量的关键字检索;另外,通过确定各节点的类型,从而得到更符合用户需求的节点;还有通过扩展查询条件,从而实现支持语义识别的关键字检索,使得检索结果更加精确。本实施例的方法具有0(n)的运算效率,实现了高效、准确的海量XML数据集上的关键字检索。
[0204]值得注意的是,上述系统实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0205]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种关键字检索方法,其特征在于,所述方法包括: 接收输入的关键字检索请求,所述请求中包括目标文件的ID和关键字检索语句; 根据所述目标文件的ID读取文件信息; 对所述目标文件进行分块; 在各分块上运行Mapper程序,以由所述Mapper程序根据所述关键字检索语句以及所述文件信息查询得到各分块对应的结构完整关键字子树SCKS、最小最低公共祖先SLCA节点,并从所述SCKS中移除以所述SLCA节点为根节点的数据片段,生成子树SCKS’ ; 发送所述SLCA节点与所述子树SCKS’至Reduce设备,以由所述Reduce设备根据所述SLCA节点与所述子树SCKS’计算得到检索结果。
2.如权利要求1所述的方法,其特征在于,所述文件信息包括所述目标文件的所有节点信息,所述节点信息包括节点的唯一标识、节点的标签名、节点的类型,所述节点的类型包括实体节点、属性节点、连接节点和值节点。
3.如权利要求2所述的方法,其特征在于,所述在各分块上运行Mapper程序,根据所述关键字检索语句以及所述文件信息查询得到各分块对应的结构完整关键字子树SCKS、最小最低公共祖先SLCA节点包括: 根据所述节点信息在各分块中查找符合所述关键字检索语句的值节点,生成值节点集; 根据所述节点信息对所 述值节点集中的值节点依次进行补全操作,得到各分块对应的结构完整关键字子树SCKS ; 查找各分块对应的结构完整关键字子树SCKS中的各个值节点的公共祖先,将所述公共祖先作为最低公共祖先LCA节点; 比较各LCA节点的祖孙关系,将辈分最小的LCA节点作为最小最低公共祖先SLCA节点。
4.如权利要求3所述的方法,其特征在于,所述根据所述节点信息对所述值节点集中的值节点依次进行补全操作,得到各分块对应的结构完整关键字子树SCKS包括: 步骤1、定位至所述值节点集中的第一个值节点; 步骤2、读取所述值节点的唯一标识; 步骤3、根据所述唯一标识,向上补全,将补全后的结果存入对应的结构完整关键字子树SCKS中; 步骤4、定位至所述值节点集中的下一个值节点,并递归执行步骤2至3,直至最后一个值节点完成补全操作。
5.如权利要求1所述的方法,其特征在于,所述Reduce设备根据所述SLCA节点与所述子树SCKS’计算得到检索结果包括: 所述Reduce设备调用Reduce程序; 所述Reduce程序保存接收到的SLCA节点,并将该SLCA节点记为Pl ; 所述Reduce程序合并各分块对应的SCKS ’,生成SCKS ” ; 所述Reduce程序对所述SCKS”进行SLCA运算,得到SLCA节点,并记该节点为P2 ; 所述Reduce程序合并所述Pl和P2,得到最终的检索结果。
6.如权利要求1至5任一项所述的方法,其特征在于,关键字检索语句Q满足Q —TnI Ts I QTn I QTs,其中,-> 为“定义为”,I为“或”,Ts是包含语义的关键字子语句,Tn是不属于Ts的τ,τ是不含空字符的非空字符串,Ts包括τ > τIτ〈τIτ>τIτ〈=τIτ>=τ τ:τ-τ, >为“包含”,τ:τ-τ表示一个设定的区间范围。
7.—种关键字检索装置,其特征在于,所述装置包括: 检索请求接收单元,用于接收输入的关键字检索请求,所述请求中包括目标文件的ID和关键字检索语句; 文件信息获取单元,用于根据所述目标文件的ID读取文件信息; 分块单元,用于对所述目标文件进行分块; SCKS和SLCA节点生成单元,用于在各分块上运行Mapper程序,以由所述Mapper程序根据所述关键字检索语句以及所述文件信息查询得到各分块对应的结构完整关键字子树SCKS、最小最低公共祖先SLCA节点,并从所述SCKS中移除以所述SLCA节点为根节点的数据片段,生成子树SCKS’ ; 发送单元,用于发送所述SLCA节点与所述子树SCKS ’至Reduce设备,以由所述Reduce设备根据所述SLCA节点与所述子树SCKS’计算得到检索结果。
8.如权利要求7所述的装置,其特征在于,所述文件信息包括所述目标文件的所有节点信息,所述节点信息包括节点的唯一标识、节点的标签名、节点的类型,所述节点的类型包括实体节点、属性节点、连接节点和值节点。
9.如权利要求8所述的装置,其特征在于,SCKS和SLCA节点生成单元包括: 值节点集生成模块,用于根据所述节点信息在各分块中查找符合所述关键字检索语句的值节点,生成值节点集; SCKS生成模块,用于根据所述节点信息对所述值节点集中的值节点依次进行补全操作,得到各分块对应的结构完整关键字子树SCKS ; LCA节点获取模块,用于查找各分块对应的结构完整关键字子树SCKS中的各个值节点的公共祖先,将所述公共祖先作为最低公共祖先LCA节点; SLCA节点获取模块,用于比较各LCA节点的祖孙关系,将辈分最小的LCA节点作为最小最低公共祖先SLCA节点。
10.如权利要求9所述的装置,其特征在于,所述SCKS生成模块包括: 第一值节点定位子模块,用于定位至所述值节点集中的第一个值节点; 唯一标识获取子模块,用于读取所述值节点的唯一标识; 补全操作子模块,用于根据所述唯一标识,向上补全,将补全后的结果存入对应的结构完整关键字子树SCKS中; 第二值节点定位子模块,用于定位至所述值节点集中的下一个值节点,并递归调用所述唯一标识获取子模块和所述补全操作子模块,直至最后一个值节点完成补全操作。
11.如权利要求7至10任一项所述的装置,其特征在于,关键字检索语句Q满足Q —TnI Ts I QTn I QTs,其中,-> 为“定义为”,I为“或”,Ts是包含语义的关键字子语句,Tn是不属于Ts的τ,τ是不含空字符的非空字符串,Ts包括τ > τ I τ〈τ I τ>τ I τ〈=τ I τ>=τ τ:τ-τ, >为包含,τ:τ-τ表不一个设定的区间范围。
12.一种关键字检索系统,其特征在于,所述关键字检索系统是基于云计算框架MapReduce的云计算环境平台中的系统,所述关键字检索系统包括存储有Mapper程序的Map设备和存储有Reduce程序的Reduce设备,所述Map设备包括如权利要求7至11任一项所述的述关键字检索装 置。
【文档编号】G06F17/30GK103544281SQ201310503091
【公开日】2014年1月29日 申请日期:2013年10月23日 优先权日:2013年10月23日
【发明者】徐光剑 申请人:中安消技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1