Xml数据库的检索方法及系统的制作方法

文档序号:6506310阅读:142来源:国知局
Xml数据库的检索方法及系统的制作方法
【专利摘要】本发明提供了一种XML数据库的检索方法及系统,该方法包括:在所述XML数据库中创建全文索引表,所述全文索引表使用关键词作为键值,所述键值以数据行位置标识TID作为指针,指向所述XML数据库的节点表中的含有所述关键词的节点数据行;在对所述XML数据库进行全文检索时,将用户输入的查询条件中的关键词依次匹配所述全文索引表,得到多个TID集合;根据所述关键词在查询条件中的逻辑关系对所述多个TID集合进行逻辑运算,得到符合全文检索条件的TID集合;输出所述符合全文检索条件的TID集合对应的数据行。本发明可以实现对XML数据库的全文检索,提高检索效率。
【专利说明】XI数据库的检索方法及系统

【技术领域】
[0001]本发明涉及数据库【技术领域】,具体而言,涉及一种XII数据库的检索方法及系统。

【背景技术】
[0002]XII数据库管理系统是近年来快速发展的一种新型的数据库管理系统(0818),它存储和检索的数据是XIII文档,并且可以更新XIII文档。由于存储和检索的是XII文档,所以X祖1)813常常被用作文档数据库,因此全文检索就是X祖1)813的一个非常核心的功能。
[0003]乂见数据的检索和更新语言是由13(:制定的标准的糾1161~7和双!1161~7邱(1社6。130同时制定了父如61~7标准,作为X祖1)813的标准的全文检索语言。父如61~7系列语言基于序列数据模型001),即X如61*7中任意数据都是一个序列,序列由若干个有序的项目组成;一个项目是一个原子值或者一个乂01节点,一个乂01节点是XII文档的7种节点之一。基于这样的数据模型,最自然和高效的XII数据存储方案就是把XII文档存储为节点。
[0004]在X祖1)813中存储X见文档的实体称为容器,一个容器中存储任意多个X见文档的数据内容,而这个容器由若干个数据表支撑,分别存储这些XII文档的各个方面的数据和结构信息,包括节点数据,节点间关系,路径数据,各种索引,各种统计信息等。数据表存储的单位是数据行,一个数据表中含有若干个数据行,并且可以通过索引快速查找到特定的数据行。
[0005]XII文档内容被作为节点数据存储在一个节点表中,在乂01的7种节点中,将属性节点、名字空间节点、文本节点、注释节点和处理指令节点都存放在它们的父节点(必然是元素节点)中,因此节点表中只存储元素节点和文档节点。文档节点存储一个XII文档的元数据信息,而文档的内容则存储在这个文档的所有元素节点中。
[0006]因为XII数据库的数据量非常庞大,因此需要一个高效的全文检索方法来对XII数据库进行全文检索。


【发明内容】

[0007]本发明实施例提供一种XII数据库的检索方法及系统,以实现对XII数据库的全文检索,提高检索效率。
[0008]为此,本发明实施例提供如下技术方案:
[0009]一种数据库的检索方法,包括:
[0010]在XII数据库中创建全文索引表,所述全文索引表使用关键词作为键值,所述键值以数据行位置标识110作为指针,指向所述XII数据库的节点表中的含有所述关键词的节点数据行;
[0011]在对所述XII数据库进行全文检索时,将用户输入的查询条件中的关键词依次匹配所述全文索引表,得到多个110集合;
[0012]根据所述关键词在查询条件中的逻辑关系对所述多个110集合进行逻辑运算,得到符合全文检索条件的110集合;
[0013]输出所述符合全文检索条件的110集合对应的数据行。
[0014]优选地,所述110集合以位图的方式存储。
[0015]优选地,在所述週I数据库中创建全文索引表包括:
[0016]将要存储的XII文档的文本节点分词,得到所述关键词的集合;
[0017]将所述关键词作为新的索引插入到所述全文索引表中来指向所述XII文档的节点数据行。
[0018]优选地,在所述XIII数据库中创建全文索引表还包括:
[0019]在将所述关键词作为新的索引插入到所述全文索引表中来指向所述XII文档的节点数据行之前,利用所述XII数据库中的停用词元数据表对所述集合进行过滤。
[0020]优选地,所述方法还包括:
[0021]对所述查询条件进行分词,得到分词结果;
[0022]从所述分词结果中提取关键词。
[0023]优选地,所述从所述分词结果中提取关键词包括:
[0024]对所述分词结果中的单词用所述XII数据库中的停用词元数据表进行过滤;
[0025]对过滤后的分词结果,利用所述XII数据库中的词汇关系元数据表发展所述分词结果中的关键词的关系词,和/或利用所述XII数据库中的词根化元数据表发展所述分词结果中的关键词的同词根的词。
[0026]一种乂1\11数据库的检索系统,包括:
[0027]索引表创建模块,用于在XII数据库中创建全文索引表,所述全文索引表使用关键词作为键值,所述键值以数据行位置标识110作为指针,指向所述XII数据库的节点表中的含有所述关键词的节点数据行;
[0028]匹配模块,用于在对所述XII数据库进行全文检索时,将用户输入的查询条件中的关键词依次匹配所述全文索引表,得到多个110集合;
[0029]逻辑运算模块,用于根据所述关键词在查询条件中的逻辑关系对所述多个110集合进行逻辑运算,得到符合全文检索条件的110集合;
[0030]检索结果输出模块,用于输出所述符合全文检索条件的110集合对应的数据行。[0031〕 优选地,索引表创建模块包括:
[0032]分词单元,用于将要存储的X见文档的文本节点分词,得到所述关键词的集合;
[0033]插入单元,用于将所述关键词作为新的索引插入到所述全文索引表中来指向所述XII文档的节点数据行。
[0034]优选地,所述索引表创建模块还包括:
[0035]过滤单元,用于在将所述关键词作为新的索引插入到所述全文索引表中来指向所述XII文档的节点数据行之前,利用所述XII数据库中的停用词元数据表对所述集合进行过滤。
[0036]优选地,所述系统还包括:
[0037]查询条件分解模块,用于对所述查询条件进行分词,得到分词结果;
[0038]关键词提取模块,用于从所述分词结果中提取关键词。
[0039]优选地,所述关键词提取模块,具体用于对所述分词结果中的单词用所述XII数据库中的停用词元数据表进行过滤;对过滤后的分词结果,利用所述XII数据库中的词汇关系元数据表发展所述分词结果中的关键词的关系词,和/或利用所述XII数据库中的词根化元数据表发展所述分词结果中的关键词的同词根的词。
[0040]本发明实施例提供的XII数据库的检索方法及系统,在所述XII数据库中创建全文索引表,全文索引表使用关键词作为键值,指向节点表中的含有这个关键词的一个节点数据行。使用这种文本索引,可以快速地完成关键词匹配测试,从而迅速得出符合全文检索条件的节点数据行,实现高效的全文检索。

【专利附图】

【附图说明】
[0041]图1是本发明实施例XII数据库的检索方法的流程图;
[0042]图2是本发明实施例XII数据库的检索系统的一种结构示意图;
[0043]图3是本发明实施例XII数据库的检索系统的另一种结构示意图。

【具体实施方式】
[0044]下面将参考附图并结合实施例,来详细说明本发明。
[0045]在存储一个X见文档时,文档被X祖1)813的查询引擎送入“X (31,16八?I
X见)模式的X见文档解析器中,该解析器将XII文档数据作为事件来通知给X见0813的执行引擎。执行引擎将XII文档数据中的文本节点送入分词器中,得到的就是一个关键词的集合。这些关键词被插入到全文索引中来指向这个节点数据行。
[0046]“X是一个用于处理X见事件驱动的“推”模型,“X解析器在读取文档时激活一系列事件,这些事件被推给事件处理器,然后由事件处理器提供对文档内容的访问方法。
[0047]X祖1)813系统定义一个默认的停用词表31,分词器产生的单词中在31中的,不插入到全文索引表中。在全文检索查询语句中的全文检索字符串()也使用该停用词表进行过滤,过滤后剩余单词再使用全文索引表来查询。如果被分词后的单词集合被31过滤后为空集,那么不再使用全文索引表而是直接扫描节点表。使用这个默认的停用词表可以防止全文索引表被非常常用的单词,比如英语中的”3,册,^6, 1!!,0!1,如”等以及汉语中的语气助词等急剧膨胀而影响查询效率----那些单词在每个文本节点中都很可能存在。这个停用词表可以由用户修改和定制,这样用户可以根据自己的应用需求灵活调整。
[0048]基于XII数据库的上述特点,本发明提出一种实现高效的全文检索的文本索引技术。使用这种文本索引,可以快速地完成关键词匹配测试,从而迅速得出符合全文检索条件的节点数据行。这种文本索引为节点表而建立,是节点表的索引,为了方便描述,将这种文本索引表称为全文索引表。
[0049]如图1所示,是本发明实施例XII数据库的检索方法的流程图,包括以下步骤:
[0050]步骤101,在X祖^数据库中创建全文索引表,所述全文索引表使用关键词作为键值,所述键值以数据行位置标识110作为指针,指向所述XII数据库的节点表中的含有所述关键词的节点数据行。
[0051]全文索引表使用关键词作为键值,指向节点表中的含有这个关键词的一个节点数据行。由于任何一个单词都很可能在多个节点中出现,所以全文索引表是允许重复键值的,比如“这个词为键值的索引有很多条,分别指向节点表中的多个节点数据行;反过来任何一个节点数据行也通常有多个全文索弓I行指向它,因为其中有多个关键词。
[0052]与任何其他索引一样,本发明实施例中的全文索引表指向节点表的“指针”称为数据行标识(110),它含有节点表数据行的地址,使用它即可得到节点表中对应的数据行。当进行全文检索时,将用户查询条件中的关键词收集起来,然后依次查找全文索引表,得到若干个110构成的位图,然后根据这些关键词在查询条件中的逻辑关系对这些位图进行与/或/非操作,即可得到最终符合全部的全文检索条件的110集合,从而得出查询结果。比如查找同时含有”£1卯16”和的节点,前者得到110位图是“000100110100”后者是得到的丁10位图是“010100010010”,对这两个位图做与操作,最终得到结果是“000100010000”,从这个位图看到第4位和第8位是1,所以可以得知110是4和8的两行是最终结果。
[0053]步骤102,在对所述XII数据库进行全文检索时,将用户输入的查询条件中的关键词依次匹配所述全文索引表,得到多个110集合。
[0054]步骤103,根据所述关键词在查询条件中的逻辑关系对所述多个110集合进行逻辑运算,得到符合全文检索条件的110集合;
[0055]步骤104,输出所述符合全文检索条件的110集合对应的数据行。
[0056]首先在创建一个容器时,创建一个全文索引表作为该容器的节点表的索引表。在存储一个XII文档时,^110818的查询引擎将XII文档送入执行引擎的5八X模式的XII解析器,该解析器会以事件通知的形式让执行引擎获得XIII文档的节点数据。
[0057]在文本节点所属的元素节点结束事件处理函数中,执行引擎存储元素节点数据到节点表,然后存储引擎的索引维护机制会调用全文索引表的回调函数(简写为叩,叩代表的回调函数用于产生索引表键值)来创建索引表键值。回调函数??将这个元素节点的所有文本子节点的字符串依次送入分词器,分词器为每个字符串返回若干个单词,所有这些单词构成一个集合30。30被默认的停用词表过滤得到最终的有效单词集合3。3中的单词被叩全部返回给存储引擎的索引构建逻辑。然后索引构建逻辑会将所有这些键值都插入到全文索引表中,他们都指向同一个节点数据行。
[0058]当一个节点数据内容被更新时,并不去除那些原来指向这个节点数据行的全文索弓丨。这样当得到一个节点时,还需要进一步对其文本节点数据做分词,并且查找目标单词。即便如此,使用了全文索引仍然可以加速全文检索,因为可以避免从一个容器的节点表的大量的节点中查找目标单词。
[0059]做X如60查询时将查询条件字符串做分词并使用默认的停用词表过滤后,得到查询单词集合33。用集合33中的单词依次查询全文索引表得到若干个对应的110集合。根据查询条件的不同,33中的单词之间的逻辑关系就是这些110集合之间的运算关系。对这些位图执行逻辑运算得到最终的110集合。
[0060]比如,33=( “英语”,“教师”丨,这两个单词间的关系是与,也就是要查询同时含有“英语”和“教师”两个单词的XII元素节点。使用“英语”和“教师”两词分别查询全文索引表,得到两个110集合110341和110342。110集合以位图的方式存储,而位图可以方便地做逻辑位运算,即与或非运算。所以对110341和110342做按位与操作,即可得出这两个集合的交集,也就是同时含有这两个单词的110的集合11036切。11086^0中含有最终结果,从中取出每一个110并且从节点表中用此110获取节点数据行,就找到了符合全文检索条件的数据。
[0061]本发明实施例的XI[数据库的检索方法可以适用于乂01161~7 ?11111:6X1:的查询方式和本)(10)813目前的工作方式,可以高效地实现全文检索功能。特别是在存储海量XII数据时,以及全文检索条件有大量逻辑运算组合时,使用本索引方案的优势更接近明显。
[0062]相应地,本发明实施例还提供一种XII数据库的检索系统,如图2所示,是该系统的一种结构示意图。
[0063]在该实施例中,所述系统包括:
[0064]索引表创建模块201,用于在所述)011数据库中创建全文索引表,所述全文索引表使用关键词作为键值,所述键值以数据行位置标识110作为指针,指向所述XII数据库的节点表中的含有所述关键词的节点数据行;
[0065]匹配模块202,用于在对所述XII数据库进行全文检索时,将用户输入的查询条件中的关键词依次匹配所述全文索引表,得到多个110集合;
[0066]逻辑运算模块203,用于根据所述关键词在查询条件中的逻辑关系对所述多个110集合进行逻辑运算,得到符合全文检索条件的110集合;
[0067]检索结果输出模块204,用于输出所述符合全文检索条件的110集合对应的数据行。
[0068]在本发明实施例中,索引表创建模块包括:分词单元和插入单元(未图示其中:
[0069]所述分词单元,用于将要存储的XII文档的文本节点分词,得到所述关键词的集合;
[0070]所述插入单元,用于将所述关键词作为新的索引插入到所述全文索引表中来指向所述XII文档的节点数据行。
[0071]所述索引表创建模块还可包括:过滤单元(未图示),用于在将所述关键词作为新的索引插入到所述全文索引表中来指向所述XII文档的节点数据行之前,利用所述XII数据库中的停用词元数据表对所述集合进行过滤。
[0072]如图3所示,是本发明实施例XII数据库的检索系统的另一结构示意图。
[0073]与图2所示实施例不同的是,在该实施例中,所述系统还包括:
[0074]查询条件分解模块301,用于对所述查询条件进行分词,得到分词结果;
[0075]关键词提取模块302,用于从所述分词结果中提取关键词。
[0076]在实际应用中,上述关键词提取模块302具体可以对所述分词结果中的单词用所述XII数据库中的停用词元数据表进行过滤;对过滤后的分词结果,利用所述XII数据库中的词汇关系元数据表发展所述分词结果中的关键词的关系词,和/或利用所述XII数据库中的词根化元数据表发展所述分词结果中的关键词的同词根的词。
[0077]本发明实施例的XI[数据库的检索系统可以适用于乂01161~7 ?11111:6X1:的查询方式和本)(10)813目前的工作方式,可以高效地实现全文检索功能。特别是在存储海量XII数据时,以及全文检索条件有大量逻辑运算组合时,使用本索引方案的优势更接近明显。
[0078]本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
[0079]显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0080]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种XML数据库的检索方法,其特征在于,包括: 在XML数据库中创建全文索引表,所述全文索引表使用关键词作为键值,所述键值以数据行位置标识TID作为指针,指向所述XML数据库的节点表中的含有所述关键词的节点数据行; 在对所述XML数据库进行全文检索时,将用户输入的查询条件中的关键词依次匹配所述全文索引表,得到多个TID集合; 根据所述关键词在查询条件中的逻辑关系对所述多个TID集合进行逻辑运算,得到符合全文检索条件的TID集合; 输出所述符合全文检索条件的TID集合对应的数据行。
2.根据权利要求1所述的方法,其特征在于,所述TID集合以位图的方式存储。
3.根据权利要求1所述的方法,其特征在于,在所述XML数据库中创建全文索引表包括: 将要存储的XML文档的文本节点分词,得到所述关键词的集合; 将所述关键词作为新的索引插入到所述全文索引表中来指向所述XML文档的节点数据行。
4.根据权利要求3所述的方法,其特征在于,在所述XML数据库中创建全文索引表还包括: 在将所述关键词作为新的索引插入到所述全文索引表中来指向所述XML文档的节点数据行之前,利用所述XML数据库中的停用词元数据表对所述集合进行过滤。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括: 对所述查询条件进行分词,得到分词结果; 从所述分词结果中提取关键词。
6.根据权利要求5所述的方法,其特征在于,所述从所述分词结果中提取关键词包括: 对所述分词结果中的单词用所述XML数据库中的停用词元数据表进行过滤; 对过滤后的分词结果,利用所述XML数据库中的词汇关系元数据表发展所述分词结果中的关键词的关系词,和/或利用所述XML数据库中的词根化元数据表发展所述分词结果中的关键词的同词根的词。
7.—种XML数据库的检索系统,其特征在于,包括: 索引表创建模块,用于在XML数据库中创建全文索引表,所述全文索引表使用关键词作为键值,所述键值以数据行位置标识TID作为指针,指向所述XML数据库的节点表中的含有所述关键词的节点数据行; 匹配模块,用于在对所述XML数据库进行全文检索时,将用户输入的查询条件中的关键词依次匹配所述全文索引表,得到多个TID集合; 逻辑运算模块,用于根据所述关键词在查询条件中的逻辑关系对所述多个TID集合进行逻辑运算,得到符合全文检索条件的TID集合; 检索结果输出模块,用于输出所述符合全文检索条件的TID集合对应的数据行。
8.根据权利要求7所述的系统,其特征在于,索引表创建模块包括: 分词单元,用于将要存储的XML文档的文本节点分词,得到所述关键词的集合; 插入单元,用于将所述关键词作为新的索引插入到所述全文索引表中来指向所述XML文档的节点数据行。
9.根据权利要求8所述的系统,其特征在于,所述索引表创建模块还包括: 过滤单元,用于在将所述关键词作为新的索引插入到所述全文索引表中来指向所述XML文档的节点数据行之前,利用所述XML数据库中的停用词元数据表对所述集合进行过滤。
10.根据权利要求7所述的系统,其特征在于,所述系统还包括: 查询条件分解模块,用于对所述查询条件进行分词,得到分词结果; 关键词提取模块,用于从所述分词结果中提取关键词。
11.根据权利要求10所述的系统,其特征在于, 所述关键词提取模块,具体用于对所述分词结果中的单词用所述XML数据库中的停用词元数据表进行过滤;对过滤后的分词结果,利用所述XML数据库中的词汇关系元数据表发展所述分词结果中的关键词的关系词,和/或利用所述XML数据库中的词根化元数据表发展所述分词结果中的关键词的同词根的词。
【文档编号】G06F17/30GK104346331SQ201310311497
【公开日】2015年2月11日 申请日期:2013年7月23日 优先权日:2013年7月23日
【发明者】赵伟, 李 浩, 郑程光, 孙伟丰, 罗正海, 陈丽娟 申请人:北大方正集团有限公司, 方正信息产业控股有限公司, 上海方正数字出版技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1