CN102033954B - 关系数据库中可扩展标记语言文档全文检索查询索引方法 - Google Patents

关系数据库中可扩展标记语言文档全文检索查询索引方法 Download PDF

Info

Publication number
CN102033954B
CN102033954B CN201010605202A CN201010605202A CN102033954B CN 102033954 B CN102033954 B CN 102033954B CN 201010605202 A CN201010605202 A CN 201010605202A CN 201010605202 A CN201010605202 A CN 201010605202A CN 102033954 B CN102033954 B CN 102033954B
Authority
CN
China
Prior art keywords
node
text
word
record
label
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201010605202A
Other languages
English (en)
Other versions
CN102033954A (zh
Inventor
聂铁铮
赵利
申德荣
于戈
岳德君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Northeastern University China
Original Assignee
Northeastern University China
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Northeastern University China filed Critical Northeastern University China
Priority to CN201010605202A priority Critical patent/CN102033954B/zh
Publication of CN102033954A publication Critical patent/CN102033954A/zh
Application granted granted Critical
Publication of CN102033954B publication Critical patent/CN102033954B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Abstract

一种关系数据库中可扩展标记语言文档全文检索查询索引方法,包括:采用基于标签序列的二维关系表方式存储XML文档数据;构建文档结构基本信息表;在文档结构基本信息表的节点文本列上创建基于单词的倒排索引;进行基于索引的全文检索查询四个步骤,本发明的索引方法能够有效提高对可扩展标记语言文档的管理效率和可扩展标记语言文档进行全文检索操作时的执行效率,减少查询执行时间;也具有较高的通用性,通过使用关系模式对XML文档数据和索引数据进行存储,能够与已有的关系数据库无缝融合;同时能够应用于对XML文档数据的关键字检索的查询中,提高查询的执行效率。

Description

关系数据库中可扩展标记语言文档全文检索查询索引方法
技术领域
本发明属于计算机数据库技术领域,特别涉及一种面向关系数据库中支持可扩展标记语言文档全文检索查询的索引方法。
背景技术
随着可扩展标记语言(Extensible Markup Language XML)逐渐成为数据表示和数据交换的标准,XML在越来越多的领域得到了广泛的应用,XML文档的数量也在逐渐增多,如何从大量XML文档中查询出用户满意的结果已经成为数据库应用领域一个重要需求;在对XML文档的查询中,全文检索查询能够帮助用户根据文本内容对文档中的数据进行访问,而全文检索的性能则主要依赖于XML文档在数据库中的存储方式以及索引的结构;
由于当前应用依然以关系数据库管理***为主要的数据管理软件,并且XML数据经常伴随着关系数据而存在,因此在关系数据库中扩展对XML文档数据的管理功能成为数据库***处理XML数据的主要实现手段;关系数据库存储XML文档数据的形式主要有以下几种方法:将XML数据分解成多个关系表进行存储,将XML数据作为一个大文本文件进行存储,将XML文档数据按照标签出现的顺序存入二维关系表;
以上第一种存储方法属于较早的XML文档数据管理方法,受关系数据库限制,在执行复杂查询时将产生大量的关系连接操作,数据冗余和执行代价都较大;第二种存储方式虽然保留了文档结构,但原始的文本数据没有进行任何预处理,依然需要在查询的执行过程中进行解析,因此仅起到了存储作用;第三种存储方法不但保留了XML文档数据原有的结构,又可以利用关系数据库现有成熟技术进行处理;
然而,无论采用何种存储方式处理XML文档的关系数据库,对于XML文档的全文检索查询都缺少充分的索引结构支持,以提高全文检索查询的执行效率。
发明内容
为解决现有技术的不足之处,本发明提供一种支持可扩展标记语言文档全文检索查询的索引结构。 
本发明的技术方案是这样实现的:支持可扩展标记语言全文检索查询的索引方法,该索引方法的使用流程如图1所示,包括以下步骤:
步骤1:采用基于标签序列的二维关系表方式存储XML文档数据;
首先对纯文本格式的XML文档数据进行基于关系表方式的存储,这个关系表称为XML数据表;在XML文档中每个元素、属性和值文本都分为开标节点和闭节点,并且都被解析为对应关系中的一个记录,关系的模式中包括文档编号、节点名称、杜威编码、节点类型和节点值;节点名称为XML文档中元素的标签或属性名,节点类型供分为六种,分别为元素开节点、元素闭节点、属性开节点、属性闭节点、文本开节点和文本闭节点,节点值主要存储文本节点的值文本数据;
在存储XML文档数据的同时,对XML文档中元素的标签和属性名创建文本编号,即使用一个唯一的整型数值来表示一个元素的标签或属性名文本,这些映射信息保存在标签映射表中,表中包括标签编号和标签文本两个字段;
以此种结构存储的文档数据不但可以利用关系数据库的现有技术,还保持了文档的原始结构;
步骤2:构建文档结构基本信息表;
基于以关系形式存储的XML文档内容,进一步解析出节点结构信息并创建包含文档中节点结构的基本信息表;节点结构的基本信息表的结构包括的属性有:
文档编号(表示为DocID),XML文档在***或表中的唯一标识编号,数据类型为整型;
节点的杜威编码(即Dewey编码,表示为DeweyCode),由从文档根节点开始到达当前节点所经过的节点在其兄弟节点中的次序所组成的编码,数据类型为整型数组;
节点标签编号(表示为TagID),节点标签文本在***中的唯一标识编号,数据类型为整型,具体对应关系在***运行时生成;
节点类型(表示为NodeType),节点类型包括元素节点(用“1”表示)和属性节点(用“2”表示),数据类型位整型;
节点路径(表示为Path),为从根节点到当前节点所经过的所有节点所构成的路径,其中每个节点的标签用标签编号进行表示,因此数据类型为整型数组;
节点深度(表示为Depth),从根节点到当前节点所经过节点的数量,数据类型为整型;
节点文本(表示为Value),当前节点下所直接包含的文本内容,数据类型为文本型;
节点文本类型(表示为ValueType),主要在XML有详细的模式定义时用来标识节点文本的数据类型,分为整型、浮点和文本类型;
节点物理地址(表示为NodeAddr),记录节点在XML数据表中的物理地址,这个地址是用两个整型进行表示的,第一个整型值表示XML数据表中节点记录所在的块号,第二个整型值表示XML数据表中节点记录在块中的偏移量,因此数据类型为整型数组;物理地址表示为:块号,偏移量;
由XML文档存储结构节点记录构建节点结构基本信息表记录的方法为:顺序从XML数据表中读取记录,对于读取的记录中节点类型,如果为元素开节点,则生成该节点的杜威编码和节点路径,并将该节点相关信息放入堆栈;如果为属性开节点,使用其所在元素节点的杜威编码作为其;自身杜威编码,并将该节点相关信息放入堆栈;如果为文本开节点,则创建一个基本信息表记录(标识为R),从堆栈中读取其父节点,将父节点的文档编号、杜威编码、节点路径和节点物理地址放入记录R中,记录R中节点编号由父节点的标签生成,记录R的节点类型由父节点的节点类型决定,节点深度使用杜威编码计算获得,节点文本为当前访问的文本开节点的节点值,节点文本类型根据节点路径与XML文档模式匹配后的数据类型决定,如果没有XML文档模式则默认为文本类型;如果为元素闭节点、属性闭节点或文本闭节点,则从堆栈中取出栈顶记录;
步骤3:在文档结构基本信息表的节点文本列上创建基于单词的倒排索引;
创建倒排索引的方法为:对于文档结构基本信息表的每个记录,抽取其节点文本上的文本内容(表示为T),进行分词操作后,可获得单词和对应位置信息列表(表示为W={(w1,p1), (w2,p2), …, (wn,pn)},其中wi表示一个单词,pi表示单词wi在整个文本中出现的位置,i=1,…,n);将每个单词作为索引的键值,将该记录的地址作为记录指针***到倒排索引中;
倒排索引的结构由双层B+树结构所构成,第一层为由XML文档文本节点中出现过的单词按照字典序进行比较所构建出来的B+树,叶子节点中的每一项为一个单词,第二层为由每个单词所在文档结构基本信息表记录集合所构建出来的链表或B+树,其中每个索引项由记录中的杜威编码和单词在记录中的位置信息构成;在第二层索引中,当包含单词的记录数量小于一个存储块所能容纳的数量时使用链表,否则使用B+树;
在第二层索引中为了节省存储空间,将一个单词在一个文本节点中多次出现的情况合并到同一个索引项中,因此,第二层索引的索引项的结构包括节点所在的文档编号、节点记录的杜威编码、单词在该节点中出现的次数、标示每次单词出现位置的数组和文档结构基本信息表记录的物理地址,物理地址表示为:块号,偏移量;
步骤4:进行基于索引的全文检索查询
XML文档数据的全文检索操作的功能是判断特定路径下的节点下所包含的文本内容是否包含指定的单词或短语;基于索引执行全文检索查询的步骤如下:
步骤4-1:对全文检索查询条件进行分词和路径转换;
对XML文档数据全文检索的查询条件主要由路径信息、单词和短语所构成,在这一步中将全文检索查询中所有单词和短语进行分词,拆分成独立的单词队列,表示为QW=(qw1,qp1), (qw2, qp2), …, (qwm,qpm),其中qwi表示查询中的一个单词,qpi表示单词qwi在查询中的位置信息,i=1,…,m;位置信息qpi使用两个整型数值进行表示,第一个整型表示单词qwi所在单词或短语在查询中出现的次序,第二个整型表示单词qwi在所属单词或短语中出现的位置;
对于查询条件中的路径信息,将路径中的每一个步的标签文本转换为文本所对应的节点标签编号,从而得到一个由节点标签编号所表示的查询路径;
步骤4-2:通过基于单词的倒排索引查询获得包含全文检索单词的节点列表;
对于单词队列QW中的每一个单词qwi,i=1,…,m,使用单词作为查找键从倒排索引的第一层执行在B+树上的查询,得到包含单词qwi的所有节点所构成的B+树的根地址;从这个根地址,查询指定XML文档包含单词qwi的节点列表,表示为NLi,i=1,…,m;
步骤4-3:根据节点路径过滤单词节点列表中的节点;
对于单词qwi的节点列表中的每一项,使用其中文档结构基本信息表记录的物理地址访问文档结构基本信息表对应的记录,读取记录中节点路径;将查询路径与单词所在记录的节点路径进行比较,如果记录的节点路径包含查询路径,则在节点列表中保留该节点,否则从节点列表中删除该节点;
步骤4-4:组合节点列表中的节点;
对于每个单词过滤后的索引节点列表,按照其中物理地址获得其所指向的文档结构基本信息表对应的记录,根据查询路径以及记录中的杜威编码和节点路径进行匹配,将处于同一个符合查询路径的节点下的单词节点划分到同一个分组中;划分方法为如果当前节点路径符合查询路径,则从该节点的杜威编码中提取于查询路径相匹配部分,作为分组标志,如果已存在分组,则将该节点放入分组中,否则创建新的节点分组;
假设查询路径为: 标签1/标签2/……/标签m;
记录中的节点路径为:标签1’/标签2’/……/标签n’;
记录中的杜威编码为:位置1/位置2/……/位置n;
其中,m为查询路径上节点数量,n为记录对应节点到根节点经过的节点数量;如果节点路径符合查询路径,则有n>m,标签i=标签i’,i=1,…,m;则分组的杜威编码为位置1/位置2/……/位置m;
步骤4-5:查找符合检索条件的节点地址;
在每个分组内检查单词的匹配条件是否符合全文检索的查询条件;对于全文检索中的短语,首先检查分组中是否包含全部单词,再检查这些单词出现的顺序是否与短语中单词出现的顺序一致;对于全文检索中的单词,只须检验分组中是否存在;如果分组符合检索条件,则使用分组的杜威编码在XML数据表中找到对应记录,并返回该记录的地址;
步骤4-6:返回符合检索条件的文档片段;
在XML数据表中,从节点的地址开始,如果读取的是元素和属性的开标签,则输出节点名称作为标签文本,如果是文本的开标签则输出节点值,如果是元素的闭标签则使用节点名称输出一个“</节点名称>”文本,如果是属性闭标签和文本闭标签则不处理,这一操作知道遇到和起始节点具有相同杜威编码的节点为止;
本发明优点: 本发明的面向关系数据库中支持可扩展标记语言文档全文检索查询的索引方法能够有效提高对可扩展标记语言文档的管理效率:(1)本发明能够提高对可扩展标记语言文档进行全文检索操作时的执行效率,减少查询执行时间;(2)本发明具有较高的通用性,通过使用关系模式对XML文档数据和索引数据进行存储,能够与已有的关系数据库无缝融合;(3)本发明能够应用于对XML文档数据的关键字检索的查询中,提高查询的执行效率。 
附图说明
图1为本发明关系数据库中支持可扩展标记语言文档全文检索查询的索引方法使用流程图;
图2为本发明关系数据库中支持可扩展标记语言文档全文检索查询的索引方法基于标签序列的XML数据表;
图3为本发明关系数据库中支持可扩展标记语言文档全文检索查询的索引方法标签映射表结构;
图4为本发明关系数据库中支持可扩展标记语言文档全文检索查询的索引方法文档结构基本信息表结构;
图5为本发明关系数据库中支持可扩展标记语言文档全文检索查询的索引方法倒排索引第一层;
图6为本发明关系数据库中支持可扩展标记语言文档全文检索查询的索引方法倒排索引第二层。
具体实施方式   
下面结合附图和实施例对本发明作进一步详细说明:
本发明实施例的软硬件环境为:硬件需要1Ghz处理器,内存500M,软件需要微软的视窗操作***系列(Windows XP,Windows 2003,Windows 2008,Windows 7)或LINUX操作***(例如 RADHAT LINUX)。
实施例:有如下XML文档数据:
<商品>
<图书类>
<图书>
<书名>数据库***实现</书名>
<作者>作者1,作者2</作者>
<出版社>机械工业出版社</出版社> 
</图书>
<图书>
<书名>C语言程序设计</书名>
<作者>作者3</作者>
<出版社>清华大学出版社</出版社> 
</图书>
</图书类>
</商品>
有对该XML文档数据的全文检索查询:查询在“/商品/图书类/图书”路径下包含单词“数据库”和短语“机械工业”的内容;
步骤1:将XML文档数据作为关系表的一个XML类型的属性列保存在关系数据库中,其中XML数据的存储形式为基于标签序列的XML数据表,具体结构如图2所示;其中XML文档被作为一个记录保存在一个关系表中,在这个关系表中仅存储文档的编号,XML文档的详细数据存储在XML数据表中,表中每个记录对应一个XML的元素、属性或文本的开或闭节点,文本节点的文本值保存在节点值这一属性列中;在XML数据表中,记录被顺序地放在四个块中,块编号为1至4,每个块可容纳8条记录;
在构建XML数据表的同时,生成标签映射表如图3所示,其中“商品”的标签编号为1,“图书类”的标签编号为2,“图书”的标签编号为3,“书名”的标签编号为4,“作者”的标签编号为5,“出版社”的标签编号为6;
步骤2:基于图2中XML数据表的内容构建对应的文档结构基本信息表;构建文档结构基本信息表时,根据节点类型为元素、属性和文本开标签的XML数据表记录创建文档结构基本信息表记录,文档结构基本信息表的内容如图4中所示;文档结构基本信息表的数据存放在编号为5和6的两个物理块中,每个块中存放8条记录;
步骤3:在文档结构基本信息表的节点文本列上创建基于单词的倒排索引;
首先抽取各包含文本的节点上的节点文本,并进行分词得到如下内容:
杜威编码1.1.1.1节点上的文本为“数据库***实现”,分词后得到单词和位置信息序列(“数据库”,1),(“***”,2),(“实现”,3);
杜威编码1.1.1.2节点上的文本为“作者1,作者2”,分词后得到单词和位置信息序列(“作者1”,1),(“作者2”,2);
杜威编码1.1.1.3节点上的文本为“机械工业出版社”,分词后得到单词和位置信息序列(“机械”,1),(“工业”,2),(“出版社”,3);
杜威编码1.1.2.1节点上的文本为“C语言程序设计”,分词后得到单词和位置信息序列(“C语言”,1),(“程序”,2),(“设计”,3);
杜威编码1.1.2.2节点上的文本为“作者3”,分词后得到单词和位置信息序列(“作者3”,1);
杜威编码1.1.2.3节点上的文本为“清华大学出版社”,分词后得到单词和位置信息序列(“清华”,1),(“大学”,2),(“出版社”,3);
由此可得到XML文档数据的文本内容中出现的单词为“C语言”,“程序”,“出版社”,“大学”,“工业”,“机械”,“清华”,“设计”,“实现”,“数据库”,“***”,“作者1”,“作者2”,“作者3”,使用以上单词构建B+树,结构如图5中所示,B+树由两层构成;
根据单词在节点中的分布信息创建倒排索引第二层,如图6所示,在第二层索引中,由于记录数量较少,因此在本例中都采用链表形式存储包含单词的节点信息;
步骤4:进行基于索引的全文检索查询;
针对全文检索查询: 查询在“/商品/图书类/图书”路径下包含单词“数据库”和短语“机械工业”的内容,按照如下步骤执行:
步骤4-1:对全文检索查询条件进行分词和路径转换;
全文检索查询条件中包括单词“数据库”和短语“机械工业”,分词后得到的单词队列QW为(“数据库”,(1,1)), (“机械”, (1,1)), (“工业”,(1,2))),其中(1,1)表示单词在该查询中出现1次,在短语中的位置为1;
对于查询条件中的路径信息“/商品/图书类/图书”,将路径中的每一个标签文本根据图2中映射关系转换为节点标签编号,得到的由节点标签编号所表示的查询路径为“/1/2/3”;
步骤4-2:通过基于单词的倒排索引查询获得包含全文检索单词的节点列表;
对单词队列QW中的每一个单词执行从倒排索引的第一层B+树上的查询,分别得到包含单词“数据库”、“机械”和“工业”节点列表的第二层索引;第二层索引可以得到指定XML文档包含以上单词的节点列表,分别为:
单词“数据库”的节点列表数据为(1,1.1.1.1,1,1,(5,4));
单词“机械”的节点列表数据为(1,1.1.1.3,1,1,(5,6));
单词“工业”的节点列表数据为(1,1.1.1.3,1,2,(5,6));
步骤4-3:根据节点路径过滤单词节点列表中的节点;
对于单词“数据库”的节点列表中第一项,根据物理地址(5,4)读取记录,其中5表示物理块号为5,4表示记录在块内的偏移量,记录中节点路径得到“/1/2/3/4”;
对于单词“机械”的节点列表中第一项,根据物理地址(5,6)读取记录,其中5表示物理块号为5,6表示记录在块内的偏移量,记录中节点路径得到“/1/2/3/6”;
对于单词“工业”的节点列表中第一项,根据物理地址(5,6)读取记录,其中5表示物理块号为5,6表示记录在块内的偏移量,记录中节点路径得到“/1/2/3/6”;
由于路径“/1/2/3/4”和“/1/2/3/6”中包含查询路径“/1/2/3”,因此保留以上索引项中的节点;
步骤4-4:组合节点列表中的节点;
对于单词“数据库”、“机械”和“工业”过滤后的索引节点列表,访问文档结构基本信息表对应的记录,记录中的杜威编码和节点路径分别为:
包含单词“数据库”的节点的杜威编码为1.1.1.1,节点路径“/1/2/3/4”;
包含单词“机械”的节点的杜威编码为1.1.1.3,节点路径“/1/2/3/6”;
包含单词“工业”的节点的杜威编码为1.1.1.3,节点路径“/1/2/3/6”;
由于查询路径为“/1/2/3”,因此仅取杜威编码的前三位,以此来判断这些节点是否属于同一个分组;以上三个节点杜威编码取前三位后的值都是“1.1.1”,因此属于同一个分组中;
在这个分组中,具有包含单词“数据库”的杜威编码为1.1.1.1的节点,包含单词“机械”的杜威编码为1.1.1.3的节点,包含单词“工业”的杜威编码为1.1.1.3的节点;
步骤4-5:返回符合检索条件的节点地址;
检查分组内单词的匹配条件是否符合全文检索的查询条件;在全文检索的查询条件中,第一点,要求包含单词“数据库”、“机械”和“工业”,该分组中包含的单词符合条件;第二点,要求“机械”和“工业”这两个单词按照先后的顺序构成短语,在索引的结构中我们可以得到“机械”和“工业”这两个单词在文档中的位置信息,由于这两个单词所在节点的杜威编码相同,都是1.1.1.3,因此可知这两个单词属于同一个节点的文本中;倒排索引第二层索引项中的第三位和第四位值分别表示单词在该节点中出现的次数和位置,从图5中可知,单词“机械”在节点1.1.1.3出现了1次,位置为1,而单词“工业”在节点1.1.1.3出现了1次,位置为2,由于两个单词位置同样相差1,因此可以断定两个单词在节点1.1.1.3中以短语形式出现,符合全文检索的查询条件;因此,使用分组的杜威编码“1.1.1”在XML数据表中找到对应记录,该记录的物理位置为1号块,偏移量为3;
步骤4-6:返回符合检索条件的文档片段;
从记录的物理地址为1号块,偏移量为3,从这一地址开始在XML数据表中顺序访问记录并输出文本,直到物理地址为2号块,偏移量为8的记录位置,得到的XML文档片段为:
<图书>
<书名>数据库***实现</书名>
<作者>作者1,作者2</作者>
<出版社>机械工业出版社</出版社> 
</图书>
以上为查询的结果输出的一种形式,如果全文检索作为复杂XML查询中的一部分,则可以直接返回符合查询条件的节点的地址或杜威编码,以便进一步执行其它的查询操作。

Claims (1)

1.一种关系数据库中可扩展标记语言文档全文检索查询索引方法,其特征在于包括以下步骤:
步骤1:采用基于标签序列的二维关系表方式存储XML文档数据;
首先对纯文本格式的XML文档数据进行基于关系表方式的存储,关系的模式中包括文档编号、节点名称、杜威编码、节点类型和节点值;节点名称为XML文档中元素的标签或属性名,节点类型分为六种,分别为元素开节点、元素闭节点、属性开节点、属性闭节点、文本开节点和文本闭节点,节点值主要存储文本节点的值文本数据;
在存储XML文档数据的同时,对XML文档中元素的标签和属性名创建文本编号,即使用一个唯一的整型数值来表示一个元素的标签或属性名文本,这些映射信息保存在标签映射表中,表中包括标签编号和标签文本两个字段;
步骤2:构建文档结构基本信息表;
基于关系表方式存储的XML文档内容,进一步解析出节点结构信息并创建包含文档中节点结构的基本信息表;节点结构的基本信息表的结构包括的属性有:
文档编号,节点的杜威编码,节点标签编号,节点类型,节点路径,节点深度,节点文本,节点文本类型,节点物理地址;
文档编号,XML文档在***或表中的唯一标识编号,数据类型为整型;
节点的杜威编码,由从文档根节点开始到达当前节点所经过的节点在其兄弟节点中的次序所组成的编码,数据类型为整型数组;
节点标签编号,节点标签文本在***中的唯一标识编号,数据类型为整型,具体对应关系在***运行时生成;
节点类型,节点类型包括元素节点和属性节点,数据类型为整型;
节点路径,为从根节点到当前节点所经过的所有节点所构成的路径,其中每个节点的标签用标签编号进行表示,因此数据类型为整型数组;
节点深度,从根节点到当前节点所经过节点的数量,数据类型为整型;
节点文本,当前节点下所直接包含的文本内容,数据类型为文本型;
节点文本类型,主要在XML有详细的模式定义时用来标识节点文本的数据类型,分为整型、浮点和文本类型;
节点物理地址,记录节点在XML数据表中的物理地址,这个地址是用两个整型进行表示的,第一个整型值表示XML数据表中节点记录所在的块号,第二个整型值表示XML数据表中节点记录在块中的偏移量,因此数据类型为整型数组;物理地址表示为:块号,偏移量;
由XML文档存储结构节点记录构建节点结构基本信息表记录的方法为:顺序从XML数据表中读取记录,对于读取的记录中节点类型,如果为元素开节点,则生成该节点的杜威编码和节点路径,并将该节点相关信息放入堆栈;如果为属性开节点,使用其所在元素节点的杜威编码作为其自身杜威编码,并将该节点相关信息放入堆栈;如果为文本开节点,则创建一个标识为R的基本信息表记录,从堆栈中读取其父节点,将父节点的文档编号、杜威编码、节点路径和节点物理地址放入记录R中,记录R中节点编号由父节点的标签生成,记录R的节点类型由父节点的节点类型决定,节点深度使用杜威编码计算获得,节点文本为当前访问的文本开节点的节点值,节点文本类型根据节点路径与XML文档模式匹配后的数据类型决定,如果没有XML文档模式则默认为文本类型;如果为元素闭节点、属性闭节点或文本闭节点,则从堆栈中取出栈顶记录;
步骤3:在文档结构基本信息表的节点文本列上创建基于单词的倒排索引;
对于文档结构基本信息表的每个记录,抽取其节点文本上的文本内容,表示为T,进行分词操作后,可获得单词和对应位置信息列表,表示为W={(w1,p1), (w2,p2), …, (wn,pn)},其中wi表示一个单词,pi表示单词wi在整个文本中出现的位置,i=1,…,n;将每个单词作为索引的键值,将文档结构基本信息表的每个记录的物理地址,作为记录指针***到倒排索引中;
倒排索引的结构由双层B+树结构所构成,第一层为由XML文档文本节点中出现过的单词按照字典序进行比较所构建出来的B+树,叶子节点中的每一项为一个单词,第二层为由每个单词所在文档结构基本信息表记录集合所构建出来的链表或B+树,其中每个索引项由记录中的杜威编码和单词在记录中的位置信息构成;在第二层索引中,当包含单词的记录数量小于一个存储块所能容纳的数量时使用链表,否则使用B+树;
在第二层索引中为了节省存储空间,将一个单词在一个文本节点中多次出现的情况合并到同一个索引项中,因此,第二层索引的索引项的结构包括节点所在的文档编号、节点记录的杜威编码、单词在该节点中出现的次数、标示每次单词出现位置的数组和文档结构基本信息表记录的物理地址,物理地址表示为:块号,偏移量;
 步骤4:进行基于索引的全文检索查询;
XML文档数据的全文检索操作的功能是判断特定路径下的节点下所包含的文本内容是否包含指定的单词或短语;基于索引执行全文检索查询的步骤如下:
步骤4-1:对全文检索查询条件进行分词和路径转换;
对XML文档数据全文检索的查询条件主要由路径信息、单词和短语所构成,在这一步中将全文检索查询中所有单词和短语进行分词,拆分成独立的单词队列,表示为QW=(qw1,qp1), (qw2, qp2), …, (qwm,qpm),其中qwi表示查询中的一个单词,qpi表示单词qwi在查询中的位置信息,i=1,…,m;位置信息qpi使用两个整型数值进行表示,第一个整型表示单词qwi所在单词或短语在查询中出现的次序,第二个整型表示单词qwi在所属单词或短语中出现的位置;
对于查询条件中的路径信息,将路径中的每一个标签文本转换为文本所对应的节点标签编号,从而得到一个由节点标签编号所表示的查询路径;
步骤4-2:通过基于单词的倒排索引查询获得包含全文检索单词的节点列表;
对于单词队列QW中的每一个单词qwi,i=1,…,m,使用单词作为查找键从倒排索引的第一层执行在B+树上的查询,得到包含单词qwi的所有节点所构成的B+树的根地址;从这个根地址,查询指定XML文档包含单词qwi的节点列表,表示为NLi,i=1,…,m;
步骤4-3:根据节点路径过滤单词节点列表中的节点;
对于单词qwi的节点列表中的每一项,使用其中文档结构基本信息表记录的物理地址访问文档结构基本信息表对应的记录,读取记录中节点路径;将查询路径与单词所在记录的节点路径进行比较,如果记录的节点路径包含查询路径,则在节点列表中保留该节点,否则从节点列表中删除该节点;
步骤4-4:组合节点列表中的节点;
对于每个单词过滤后的索引节点列表,按照其中物理地址获得其所指向的文档结构基本信息表对应的记录,根据查询路径以及记录中的杜威编码和节点路径进行匹配,将处于同一个符合查询路径的节点下的单词节点划分到同一个分组中;划分方法为如果当前节点路径符合查询路径,则从该节点的杜威编码中提取与查询路径相匹配部分,作为分组标志,如果已存在分组,则将该节点放入分组中,否则创建新的节点分组;
假设查询路径为: 标签1/标签2/……/标签m;
记录中的节点路径为:标签1’/标签2’/……/标签n’;
记录中的杜威编码为:位置1/位置2/……/位置n;
其中,m为查询路径上节点数量,n为记录对应节点到根节点经过的节点数量;如果节点路径符合查询路径,则有n>m,标签i=标签i’,i=1,…,m;则分组的杜威编码为位置1/位置2/……/位置m;
步骤4-5:查找符合检索条件的节点地址;
在每个分组内检查单词的匹配条件是否符合全文检索的查询条件;对于全文检索中的短语,首先检查分组中是否包含全部单词,再检查这些单词出现的顺序是否与短语中单词出现的顺序一致;对于全文检索中的单词,只须检验分组中是否存在;如果分组符合检索条件,则使用分组的杜威编码在XML数据表中找到对应记录,并返回该记录的地址;
步骤4-6:返回符合检索条件的文档片段;
在XML数据表中,从节点的地址开始,如果读取的是元素和属性的开节点,则输出节点名称作为标签文本,如果是文本的开节点则输出节点值,如果是元素的闭节点则使用节点名称输出一个“</节点名称>”文本,如果是属性闭节点和文本闭节点则不处理,这一操作直到遇到和起始节点具有相同杜威编码的节点为止。
CN201010605202A 2010-12-24 2010-12-24 关系数据库中可扩展标记语言文档全文检索查询索引方法 Expired - Fee Related CN102033954B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010605202A CN102033954B (zh) 2010-12-24 2010-12-24 关系数据库中可扩展标记语言文档全文检索查询索引方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010605202A CN102033954B (zh) 2010-12-24 2010-12-24 关系数据库中可扩展标记语言文档全文检索查询索引方法

Publications (2)

Publication Number Publication Date
CN102033954A CN102033954A (zh) 2011-04-27
CN102033954B true CN102033954B (zh) 2012-10-17

Family

ID=43886847

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010605202A Expired - Fee Related CN102033954B (zh) 2010-12-24 2010-12-24 关系数据库中可扩展标记语言文档全文检索查询索引方法

Country Status (1)

Country Link
CN (1) CN102033954B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106294432A (zh) * 2015-05-26 2017-01-04 ***通信集团公司 一种信息处理方法及装置

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10540416B2 (en) * 2011-06-23 2020-01-21 Microsoft Technology Licensing, Llc Linking source code to running element
US10534830B2 (en) 2011-06-23 2020-01-14 Microsoft Technology Licensing, Llc Dynamically updating a running page
CN103064859A (zh) * 2011-10-21 2013-04-24 上海湾流仪器技术有限公司 基于可变内存预申请及hash的快速xml解析方法
CN102567482B (zh) * 2011-12-20 2014-05-21 东软集团股份有限公司 面向客户的xml解析方法和装置
CN102760166B (zh) * 2012-06-12 2014-07-09 北大方正集团有限公司 一种支持多语言的xml数据库全文检索方法
CN102799685B (zh) * 2012-07-27 2016-06-01 北大方正集团有限公司 一种xml数据库全文检索的文本相关度计算方法和***
CN103853773A (zh) * 2012-12-04 2014-06-11 厦门亿联网络技术股份有限公司 一种Mysql数据库下树形数据结构的检索方法
CN103150404B (zh) * 2013-03-28 2016-06-15 北京大学 一种关系-xml混合数据关键字查询方法
DE102013206050A1 (de) * 2013-04-05 2014-10-09 Robert Bosch Gmbh Informationssystem und Verfahren zum Auswählen und Wiedergeben von Informationen, insbesondere zm Einsatz im Werkstattbereich
CN104346331A (zh) * 2013-07-23 2015-02-11 北大方正集团有限公司 Xml数据库的检索方法及***
CN103533089A (zh) * 2013-11-04 2014-01-22 北京视像元素技术有限公司 基于时空标签的信息发现、分享方法和***
CN104636384B (zh) * 2013-11-13 2019-07-16 腾讯科技(深圳)有限公司 一种处理文档的方法及装置
CN105022743A (zh) * 2014-04-24 2015-11-04 中兴通讯股份有限公司 一种管理索引的方法及装置
CN104331397B (zh) * 2014-06-19 2017-07-07 深圳市迪威泰实业有限公司 一种机器翻译方法及***
CN104021213B (zh) * 2014-06-20 2017-06-16 中国银行股份有限公司 一种合并关联记录的方法及装置
CN104391945B (zh) * 2014-11-28 2018-04-10 厦门市美亚柏科信息股份有限公司 数据库文件数据索引的处理方法和装置
CN105488087A (zh) * 2014-12-31 2016-04-13 哈尔滨安天科技股份有限公司 基于Postgresql的大字段特值索引***与方法
CN104715068B (zh) * 2015-03-31 2017-04-12 北京奇元科技有限公司 一种生成文档索引的方法和装置以及一种搜索方法和装置
WO2017131753A1 (en) * 2016-01-29 2017-08-03 Entit Software Llc Text search of database with one-pass indexing including filtering
CN107203549A (zh) * 2016-03-17 2017-09-26 北大方正集团有限公司 基于xml数据格式的单词内容检索方法和装置
CN106599062A (zh) * 2016-11-18 2017-04-26 北京奇虎科技有限公司 一种SparkSQL***中的数据处理方法和装置
CN106940715B (zh) * 2017-03-09 2019-11-15 星环信息科技(上海)有限公司 一种基于索引表的查询的方法及设备
CN108572978A (zh) * 2017-03-10 2018-09-25 深圳瀚德创客金融投资有限公司 构建用于区块链的倒排索引结构的方法和计算机***
CN108256086A (zh) * 2018-01-22 2018-07-06 成都博睿德科技有限公司 数据特征统计分析方法
CN110471888A (zh) * 2018-05-09 2019-11-19 株式会社日立制作所 一种自动收集数据的方法、装置、介质、设备及***
CN108681603B (zh) * 2018-05-22 2022-04-01 福建天泉教育科技有限公司 数据库中快速搜索树形结构数据的方法、存储介质
CN109684464B (zh) * 2018-12-30 2021-06-04 广西财经学院 通过权值比较实现规则后件挖掘的跨语言查询扩展方法
US11048816B2 (en) * 2019-04-02 2021-06-29 Sap Se Secure database utilizing dictionary encoding
CN110727726B (zh) * 2019-09-30 2022-09-30 武汉达梦数据库股份有限公司 一种文档型数据库中数据抽取到关系数据库的方法和***
CN111190904B (zh) * 2019-12-30 2023-12-08 四川蜀天梦图数据科技有限公司 一种图-关系数据库混合存储的方法和装置
CN112883249B (zh) * 2021-03-26 2022-10-14 瀚高基础软件股份有限公司 版式文档处理方法、装置以及装置的应用方法
CN115203490B (zh) * 2022-09-16 2022-12-06 国网智能电网研究院有限公司 图数据库中List列表容器数据类型的查询方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1457003A (zh) * 2002-05-08 2003-11-19 三星电子株式会社 处理正则路径表达式查询的扩展标记语言索引方法
CN1987853A (zh) * 2005-12-23 2007-06-27 北大方正集团有限公司 关系型数据库与全文检索相结合的检索方法
CN101719156A (zh) * 2009-12-30 2010-06-02 南开大学 一种在关系型数据库中无缝集成纯xml查询引擎的***

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8229932B2 (en) * 2003-09-04 2012-07-24 Oracle International Corporation Storing XML documents efficiently in an RDBMS
US7836098B2 (en) * 2007-07-13 2010-11-16 Oracle International Corporation Accelerating value-based lookup of XML document in XQuery

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1457003A (zh) * 2002-05-08 2003-11-19 三星电子株式会社 处理正则路径表达式查询的扩展标记语言索引方法
CN1987853A (zh) * 2005-12-23 2007-06-27 北大方正集团有限公司 关系型数据库与全文检索相结合的检索方法
CN101719156A (zh) * 2009-12-30 2010-06-02 南开大学 一种在关系型数据库中无缝集成纯xml查询引擎的***

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106294432A (zh) * 2015-05-26 2017-01-04 ***通信集团公司 一种信息处理方法及装置

Also Published As

Publication number Publication date
CN102033954A (zh) 2011-04-27

Similar Documents

Publication Publication Date Title
CN102033954B (zh) 关系数据库中可扩展标记语言文档全文检索查询索引方法
Cooper et al. A fast index for semistructured data
Faye et al. A survey of RDF storage approaches
Jiang et al. Path Materialization Revisited: An Efficient Storage Model for XML Data.
CN100573520C (zh) 为检索对多个文档进行预处理的方法和装置
CN103123650B (zh) 一种基于整数映射的xml数据库全文索引方法
CN107122443A (zh) 一种基于Spark SQL的分布式全文检索***及方法
CN107169033A (zh) 基于数据模式转换和并行框架的关系数据查询优化方法
CN103150404B (zh) 一种关系-xml混合数据关键字查询方法
Hachicha et al. A survey of XML tree patterns
CN101661481A (zh) 存储xml数据的方法、执行xml查询的方法及其装置
US20070271228A1 (en) Documentary search procedure in a distributed system
CN106484815B (zh) 一种基于海量数据类sql检索场景的自动识别优化方法
CN101639840A (zh) 网络信息语义结构识别方法和装置
Alghamdi et al. Semantic-based Structural and Content indexing for the efficient retrieval of queries over large XML data repositories
CN101963993B (zh) 一种数据库单表记录快速查找的方法
Černjeka et al. NoSQL document store translation to data vault based EDW
Tudhope et al. Semantic interoperability issues from a case study in archaeology
Hsu et al. UCIS-X: an updatable compact indexing scheme for efficient extensible markup language document updating and query evaluation
El-Sayed et al. Efficiently supporting order in XML query processing
Haw et al. Query optimization techniques for xml databases
Raut et al. A survey of indexing techniques for XML database
Bin-Thalab et al. TMIX: Temporal model for indexing XML documents
Fakharaldien et al. Mapping extensible markup language document with relational database management system
Zeng et al. Efficient xml keyword search: from graph model to tree model

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121017

Termination date: 20121224