CN102163218B - 基于图索引的图数据库关键词邻近搜索方法 - Google Patents

基于图索引的图数据库关键词邻近搜索方法 Download PDF

Info

Publication number
CN102163218B
CN102163218B CN201110074569A CN201110074569A CN102163218B CN 102163218 B CN102163218 B CN 102163218B CN 201110074569 A CN201110074569 A CN 201110074569A CN 201110074569 A CN201110074569 A CN 201110074569A CN 102163218 B CN102163218 B CN 102163218B
Authority
CN
China
Prior art keywords
subgraph
node
keyword
apart
index
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
CN201110074569A
Other languages
English (en)
Other versions
CN102163218A (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.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
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 Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN201110074569A priority Critical patent/CN102163218B/zh
Publication of CN102163218A publication Critical patent/CN102163218A/zh
Application granted granted Critical
Publication of CN102163218B publication Critical patent/CN102163218B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明涉及数据库关键词搜索技术领域,尤其涉及一种基于图索引的图数据库关键词邻近搜索方法。本发明包括线下的索引构建步骤和线上的搜索步骤,线下的索引构建步骤包括为有权重图G=(V,E,w)定义了一种d-距离子图,采用一种不完整的Dijkstra算法来生成以图中某一节点为中心的d-距离子图,得到的最大d-距离子图都保存在子图库中,并构建从节点到子图的索引,设计一种d-距离图索引结构,将d-距离图索引按解释型方式存储,线上的搜索步骤使用搜索算法在组合子图中进行搜索并输出top-k答案。本发明通过将搜索目标从一个完整的图缩小为一组大小有限的子图,可极大地提高搜索的效率。

Description

基于图索引的图数据库关键词邻近搜索方法
技术领域
本发明涉及数据库关键词搜索技术领域,尤其涉及一种基于图索引的图数据库关键词邻近搜索方法。
背景技术
关键词邻近搜索是一项用于数据库内结构化及半结构化数据的关键词搜索的主流技术。不同于传统的应用于非结构数据的关键词搜索技术,如Google等搜索引擎的方法,这项技术并不是只查找包含了所有给定关键词的单个文档或对象,而是在数据库中去查找包含了所有关键词的结构体,这些结构体由一些相互间存在结构联系的对象所组成,作为一个整体可满足用户的信息需求。它既不需要用户掌握结构化的查询语言和复杂的数据库模式,又能充分发掘数据库内的数据本身所具有的结构化信息的潜在价值,并在传统关键词搜索技术失效时仍然能够为用户发现有用的信息。因此,它具有十分重要的科研与产业价值。
关键词邻近搜索方法大致可按所检索的数据库类型分为三类:关系数据库的,XML数据库的,和图数据库的。其中,关系数据库的关键词邻近搜索方法帮助用户查找包含给定关键词的关系元组通过主外键关系所组成的连接网络(Connected Network,CN),它可利用关系数据库的模式减小搜索空间,还可利用RDBMS的SQL执行引擎来做查询优化;XML数据库的关键词邻近搜索方法帮助用户查找以包含给定关键词的XML标签的最低公共祖先(Lowest Common Ancestor,LCA)为根的树,它可利用XML标签的Dewey编码来提高搜索速度;而图数据库的关键词邻近搜索方法则是用于对真正的图结构数据进行检索,它主要依靠一些图搜索算法来实现,相对于前两类方法技术还不成熟(参见文献1-4)。
面向图数据的关键词邻近搜索本质上类似于图论中的经典NP完全问题——组Steiner树(Group Steiner Tree,GST)问题,但是复杂度更高,一般采用启发式算法予以解决。现有的算法的公共思想是:先将所有包含了给定关键词的匹配节点加入到一个被称为“前线”的集合当中,然后迭代地从前线中挑选节点进行访问,每访问一个节点,就把它的所有未访问的邻居节点都加入到前线中来。如果当前访问的节点是沿从某个关键词的匹配节点出发的路径而到达,则它与该关键词相连,如果当前访问的节点与查询中所有的关键词相连,则找到一棵以它为根节点、以各个关键词的匹配节点为叶子节点的连接树,作为搜索的结果保存起来。如果这棵连接树被其它找到的连接树完全覆盖,则这棵连接树会被放弃,也就是说,只有最小连接树才会被保留。当最好的k个最小连接树被找到后,搜索停止,输出top-k答案。
为了提高面向图数据的关键词邻近搜索的速度,最近有人提出了一种基于图索引的方法:首先定义了一种无权重图的r-半径子图,即以图中某一个节点为中心,包含所有从中心出发r跳内可达的节点,及这些节点之间所有的边;找出图中所有的最大r-半径子图,即不会被其它子图完全覆盖的子图,建立关键词与子图间的倒排索引;搜索时找到所有包含了查询中全部关键词的匹配子图,为每一个匹配子图生成一个由其中所有包含了关键词的节点以及它们之间的所有路径组成的子图(称为Steiner图)作为查询结果。这种方法还是存在很多问题。首先,一个Steiner图并不是一个合理的查询答案,因为它包含了过多的信息,与最小连接树相比让用户无法准确从中识别有用的信息,另外各个Steiner图之间重复信息太多,大部分答案都没有意义。其次,还有一些技术性难题没有解决,主要包括:r-半径子图在没有大小上界限定的情况下可能会非常的大,根据我们对实际数据的调查,当子图过大时会使得整个方法都失效,查询速度反而更慢;关键词到子图的这种简单的图索引结构比较低效,因为查询处理中还需要知道包含了关键词的节点,以及节点与子图间的映射关系等信息,多次索引查询造成了磁盘I/O的次数增加,直接导致了性能下降(参见文献5)。
文献1:W.-S.Li and etc.Retrieving and organizing web pages by“information unit”.InWWW Conference Proceedings,pages 230-244,2001;
文献2:G.Bhalotia and etc.Keyword searching and browsing in databases using banks.InICDE Conference Proceedings,pages 431-440,2002;
文献3:V.Kacholia and etc.Bidirectional expansion for keyword search on graph databases.InSIGMOD Conference Proceedings,pages 505-516,2005;
文献4:H.He and etc.Blinks:Ranked keyword searches on graphs.In SIGMOD ConferenceProceedings,pages 305-316,2007
文献5:G.Li,B.C.Ooi,J.Feng,J.Wang,and L.Zhou.Ease:an effective 3-in-1 keywordsearch method for unstructured,semi-structured and structured data.In SIGMOD ConferenceProceedings,pages 903-914,2008.
发明内容
针对上述存在的技术问题,本发明的目的是提供一种基于图索引的图数据库关键词邻近搜索方法,以极大地提高面向图数据库的关键词邻近搜索效率。
为达到上述目的,本发明采用如下的技术方案:
一种基于图索引的图数据库关键词邻近搜索方法,包括线下的索引构建步骤和线上的搜索步骤:
所述的线下的索引构建步骤包括以下子步骤:
①为无向有权重图G=(V,E,w)定义了一种d-距离子图;
②给定子图中节点个数上界B,采用一种不完整的Dijkstra算法来生成以图中某一节点为中心的d-距离子图;
③对已生成的子图进行过滤,保证所有最终得到的子图都不被其它子图完全覆盖;
④将得到的最大d-距离子图都保存在子图库中,并构建从节点到子图的索引;
⑤设计一种d-距离图索引结构,每个关键词的索引条目包括了所有包含该关键词的d-距离子图的id,以及每个子图中包含了该关键词的节点id的集合;
⑥将d-距离图索引按解释型方式存储;
所述线上的搜索步骤包括以下子步骤:
①将图中所有的边都以十字链表的结构常驻在内存中;
②给定关键词查询,在图索引中检索,找出所有匹配子图及其匹配节点集合;
③组合所有匹配子图,得到组合子图;
④使用搜索算法在组合子图中进行搜索并输出top-k答案。
所述d-距离子图:给定一个期望距离d,对于图中任一节点v∈V,以v为中心的d-距离子图为
Figure GDA0000068038720000031
其中,图中节点
Figure GDA0000068038720000032
当且仅当u与v的距离不大于d,图中边当且仅当
Figure GDA0000068038720000034
Figure GDA0000068038720000035
所述最大d-距离子图为:当且仅当它不会被任何其它d-距离子图所覆盖,它的节点集合不是任何其它d-距离子图的节点集合的真子集。
对每个新生成的d-距离子图都要进行最大化处理,包括以下步骤:
先将已生成的最大d-距离子图放入集合M,然后逐个取出与新生成的d-距离子图作比较,直到M为空或发现新生成的子图不是最大的或与某个已有子图相同;
如果新子图是最大的且不与任何已有子图相同,那么将它加入到最大d-距离子图集合中;
在此过程中,如果发现已有的子图被新子图覆盖,则将这个子图从最大d-距离子图集合中移除。
最终的最大d-距离子图的生成步骤为:
对图数据库的节点集合V中的每一个节点,先调用生成函数来生成以此节点为中心的d-距离子图,然后调用最大化函数来实现所有已生成的子图都是最大的,在遍历V中所有节点后算法停止,返回最大d-距离子图集合。
在d-距离图索引的逻辑结构中,一个关键词k的入口项结构为集合
Figure GDA0000068038720000036
其中,Si是包含了关键词k的最大d-距离子图,
Figure GDA0000068038720000037
是子图中包含了关键词k的节点集合。
所述线上的搜索步骤中的搜索算法为图的关键词邻近搜索算法,包括:
通过查d-距离图索引,获得包含各个关键词的子图集合与每个子图中包含某个关键词的节点集合;
通过计算各个关键词的子图集合的交集,得到关键词查询的匹配子图集合,这些匹配子图中可能包含了关键词查询的最优答案集合;
调用子图组合函数来得到真正需要进行搜索的组合子图,组合子图是图G的一个子图,其节点数与边数一般情况下远小于图G,而且在组合子图中搜索可以避免在多个匹配子图中分别搜索时所可能存在的因子图重叠而导致的性能下降问题;
调用搜索函数在组合子图中寻找top-k答案,最后返回查询结果。
本发明具有以下优点和积极效果:
1)本发明通过将搜索目标从一个完整的图缩小为一组大小有限的子图,可极大地提高搜索的效率;
2)本发明通过建立图索引,可以迅速地为一个关键词查询定位那些包含了这个查询的所有关键词的匹配子图,即包含了其部分最佳答案的那些子图;通过子图虚拟组合方法,可以快速地将所有匹配子图组合成一个图,从而消除了匹配子图的重叠对搜索性能的不利影响;
3)本发明通过使用一个支持现有最佳搜索策略的算法,可以高效地从组合子图中找到top-k答案。
附图说明
图1是本发明中子图生成函数流程图。
图2是本发明中子图最大化函数流程图。
图3是本发明中最大d-距离子图生成算法流程图。
图4是本发明中d-距离子图。
图5是本发明中V-S辅助索引图。
图6是本发明中三合一图索引的逻辑形式图。
图7是本发明中三合一图索引的物理形式图。
图8是本发明中关键词邻近搜索主函数的程序框图。
图9是本发明中子图组合函数流程图。
图10是本发明中搜索函数流程图。
图11是本发明中节点访问函数流程图。
图12是本发明中尝试终止函数流程图。
具体实施方式
1、理论基础
在图上的关键词邻近搜索的过程为:给定一个用户的关键词查询{k1,k2,...kl},令所有包含了查询中关键词ki(1≤i≤l)的节点的集合为Mi,称之为关键词ki的匹配节点集;使用某种启发式算法,从各个关键词的匹配节点集出发,迭代地探索图中的节点,如果某个被访问的节点与所有关键词的匹配节点都有已知路径相连,那么就生成以这个节点为根节点的一棵最小连接树,如果它没有被其它已生成的答案树所覆盖,那么将它做为一棵答案树保存起来;当已发现了k个答案树,并且满足了收敛条件,即不会再发现比目前最好的k个答案树更好的答案树,则终止搜索。
现有的相关方法一般采取两种方式对此过程进行优化:通过改进启发式的搜索算法来提高效率,比如强制轮流从各个关键词的匹配节点集去探索未知节点,从而避免搜索过程停滞在某些度特别大的“hub”节点上;或者使用索引技术,对搜索过程中某些步骤进行预计算,然后物化在索引中,从而在搜索时可以通过查询索引来减少计算量,提高了搜索效率。
而我们提出的基于图索引的方法则是首次使用了缩小搜索空间的方式,通过预测top-k查询结果在图中所处的区域(子图),将搜索过程限定在这些区域内,从而极大地提高了搜索效率。
首先,定义关键词查询{k1,k2,...kl}的答案——最小连接树T的评分函数score为:
score ( T ) = Σ i = 1 l dis ( v , k i )
其中,v是树T的根节点,函数dis用于计算一个节点与某个关键词的所有匹配节点间的最短路径的长度。
针对关键词邻近搜索的答案(最小连接树)的结构特征,我们给出d-距离子图的定义:
定义(d-距离子图).给定一个期望距离d,对于图中任一节点v∈V,以v为中心的d-距离子图为
Figure GDA0000068038720000052
其中,图中节点
Figure GDA0000068038720000053
当且仅当u与v的距离不大于d,图中边
Figure GDA0000068038720000054
当且仅当
Figure GDA0000068038720000055
Figure GDA0000068038720000056
2、最大d-距离子图的生成
本发明设计了一种启发式的最大d-距离子图的生成方法,有效地平衡了生成过程中的准确性与高效性。
我们称一个d-距离子图是最大的(maximal),当且仅当它不会被任何其它d-距离子图所覆盖,即它的节点集合不是任何其它d-距离子图的节点集合的真子集。如果存在超过一个的最大d-距离子图是完全一样的,即它们的节点集完全相同,那么只任意保留其中一个。我们只生成最大d-距离子图,而不保留那些非最大的(non-maximal)d-距离子图,是因为任何在一个非最大d-距离子图中可以搜索到的答案,都可以在覆盖它的最大d-距离子图中找到。所以,只生成最大d-距离子图并在其中进行搜索,既节省了在非最大d-距离子图中搜索的时间,又保证了能够发现所有子图中的答案。
首先,为了高效地生成以某一个节点u为中心的d-距离子图,本发明使用了一种不完整的Dijkstra算法来,其算法流程如图1所示。首先,令图数据库中所有节点与u的距离为无穷大,u与自己的距离为0。由于可能有hub节点(有非常多条边的节点)的存在,所以某些包含了这些hub节点的d-距离子图可能会包含非常多的节点,其大小甚至与整个图数据库的大小差不多,因此在这个子图中搜索与在整个图数据库中搜索的代价差不多,极大地妨害了搜索的效率,所以本发明在生成子图时设置了一个子图大小上界B。如果目前生成的子图的节点个数达到上界B时,就不再继续尝试其它节点,而直接终止,将已得到的节点集合作为这个子图的节点集合。而访问节点的顺序则是按照Dijkstra算法来进行,每次选择一个与u最近的新节点,并更新其邻居节点到u的距离。但不同之处在于,如果下一个离u最近的节点与u的距离已经大于d,则算法停止。因此,此算法所得到的各个节点与u之间的最短距离并不像完整的Dijkstra算法能保证是真正的最短距离,这是一种启发式算法,复杂度相对比较低,可用于大规模的图数据库。
然后,对每个新生成的d-距离子图都要进行最大化处理,其算法流程如图2所示。先将已生成的最大d-距离子图放入集合M,然后逐个取出与新生成的d-距离子图作比较,直到M为空(意味着新生成的子图不被任何已有的子图覆盖)或发现新生成的子图不是最大的或与某个已有子图相同。如果新子图是最大的且不与任何已有子图相同,那么将它加入到最大d-距离子图集合中。在此过程中,如果发现已有的子图被新子图覆盖,则将这个子图从最大d-距离子图集合中移除。
最终的最大d-距离子图的生成算法如图3所示,对图数据库的节点集合V中的每一个节点,先调用生成函数来生成以此节点为中心的d-距离子图,然后调用最大化函数来实现所有已生成的子图都是最大的,在遍历V中所有节点后算法停止,返回最大d-距离子图集合。
以下,凡是提到d-距离子图或子图,都是指最大d-距离子图。
3.d-距离图索引设计与实现
本发明在提出d-距离子图定义的基础上,设计了一种d-距离图索引。d-距离图索引分为两个部分:d-距离子图库和图索引,下面分别对其进行介绍。
3.1.d-距离子图库
d-距离子图库由两部分构成,一个是d-距离子图表,一个是V-S辅助索引。
d-距离子图表用来存储一个图中所有的d-距离子图。如图4所示,d-距离子图表的结构包括两列,第一列是子图的id,第二列是子图的节点集合。子图的id是一个可以唯一标识该子图的int值,一般可采取以子图的中心节点的id(也是int值)作为子图id的方法。例如,d-距离子图
Figure GDA0000068038720000071
的id就是其中心节点的id——v。子图的节点集合
Figure GDA0000068038720000072
是一个由中所有元素的id所构成的有序数组。之所以不将子图的边集合
Figure GDA0000068038720000073
也存储起来,是因为计算和存储
Figure GDA0000068038720000074
的代价非常的高,而我们发现如果假设将图的所有的边都保存在内存中,则不需要计算及存储
Figure GDA0000068038720000075
也可以实现在这个子图中进行搜索。考虑到存储一条边的空间非常的小,所以将一个大规模的图的所有边都保存在内存中这个假设是合理的。因此,我们完全没有必要在d-距离子图表中存储子图的边集合,这样极大地降低了抽取子图的时间开销和存储子图的空间开销。在d-距离子图表中,子图的id是主键,通过Hash表或B-树来进行访问,为指定的子图快速找到其节点集合。
如图5所示,V-S(Vertex-Subgraph)辅助索引是所有最大d-距离子图的一个倒排索引,为一个指定的节点快速查找其所在的子图。之所以在子图库中建立这个索引,是因为在建立图索引的过程中,当需要为一个节点所包含的关键词查找其所属的子图时,必须通过这个节点来查找这些子图。所以,使用V-S辅助索引可以很好地提高建立图索引的效率。在图索引建立以后,用户进行搜索的过程中,搜索算法则只会使用图索引,而无需使用V-S辅助索引。
3.2.图索引
简单的图索引是只保存了从关键词到子图的映射关系的倒排索引。但这种简单的图索引的不足之处在于,对于一个给定的关键词查询,通过这种图索引只能检索到包含了各个关键词的子图,但是,要从子图中找出查询答案,还必须知道这些子图中各个关键词的节点。也就是说,在得到了包含各个关键词的子图之后,还需要从中查找哪些节点包含了某个关键词,这是一项时间复杂度非常高的工作,要进行大量的基于磁盘的数据库或索引访问去判定每个节点是否包含了某个关键词或被某个子图包含。
因此,本发明所提出的d-距离图索引中的图索引结构将查询处理所需要用到的信息全部集成到一起,是一种将关键词-子图,关键词-节点,节点-子图三种映射合而为一的结构。如图6所示,该图索引在逻辑上相当于一个稀疏的关系表,第一列(主键)是关键词,其它n列代表n个子图中的包含关键词的节点,其中n是一个图数据库中所有最大d-距离子图的个数。图数据库中每个独一的关键词都被存为这个表中的一行,第一个属性就是该关键词,后面每个属性都是在对应的子图中包含了这个关键词的节点的id的数组。如果某个子图不包含此关键词,那其对应的属性中就没有任何节点的id。也就是说,当在这个三合一的图索引中检索某个关键词时,不仅可以查到包含了它的子图(即数组不为空的列),同时还可以查到每个子图中包含了该关键词的节点。所以,对于一个关键词查询中的每个关键词,只需要一次图索引访问即可获得所有需要的信息,避免了频繁的磁盘访问,大大降低了时间开销。
然而,图6所示的图索引的逻辑形式并不适合于存储,因为这个表非常的稀疏,大量的属性都是空值,既浪费存储空间又影响存取效率。所以,三合一图索引实际的物理存储格式如图7所示,对于每个关键词只保存了包含了该关键词的子图及其节点的信息。这种存储格式的实现方式有很多,本发明采取了用Berkeley DB这样的键-值对存储系统来实现,将关键词作为键,其对应的子图和节点信息作为值按图7中的格式作为值存储起来。当需要读取某个关键词对应的子图和节点信息时,将整个值读取出来,然后按格式分解。
4.搜索算法设计与实现
本发明以d-距离图索引为优化手段,设计了一种图的关键词邻近搜索算法,其流程图如图8所示。第一步就是通过查图索引,获得包含各个关键词的子图集合与每个子图中包含某个关键词的节点集合。然后,分别调用子图组合函数来得到真正需要进行搜索的组合子图,调用搜索函数在组合子图中寻找top-k答案,最后返回查询结果。
下面将分别详细介绍三个主要函数与相关实验。
4.1.组合子图
最直接的利用d-距离图索引的方式就是找出包含了所有关键词的子图,即匹配子图,然后分别在这些匹配子图中进行搜索。如果这些匹配子图加起来比原图数据库要小很多,那么搜索速度可以得到明显提升。但是,由于匹配子图间可能存在非常严重的重叠现象,也就是说若干个子图的节点集合间可能有交集,且所占比例较大,所以这种直接的方式会造成重复地访问存在于不同匹配子图中的同一个节点,因而导致浪费搜索时间。
因此,本发明提出在搜索前先进行子图组合,即将所有的匹配子图先组合成一个子图,各个匹配子图中重叠的部分会被合并,不会再存在重复访问同一个节点的问题。如图9所示,子图组合函数先计算出查索引得到的子图中哪些是匹配子图,然后从d-距离子图库中找出这些匹配子图的节点集合,并对所有节点集合求并集。此并集就是所要生成的组合子图的节点集合,而其边的信息则由驻留在内存中的图数据库的拓扑数据结构提供,这样使得子图组合不需要合并边,速度大大提高。接下来,继续通过合并所有匹配子图中各个关键词的匹配节点集合,得到组合子图中各个关键词的匹配节点集合。从而计算出搜索所需要的全部数据。
4.2.搜索
搜索算法的思想可概括为:为每一个关键词构造一个被称为前线的已知节点集合,每次从所有前线中挑选一个与关键词(的匹配节点)距离最近的节点进行访问,并且同时将被访问节点的所有邻居节点都加入到它所来自的前线中,并记录它是被哪个关键词访问的;如果被访问的节点已经被查询中所有的关键词都访问过,那么就可以以这个节点为根生成一棵答案树。前线是用多源最短路径迭代器来实现的,每次迭代器弹出的即是离关键词最近的节点,搜索开始阶段会先将所有的匹配节点加入到相应的迭代器中。
搜索中可能存在的一个问题是:如果某个关键词的前线很大并且其中的节点都很近,那么搜索会一直访问这个前线中的节点,在一些特定情况下(细节见H.He and etc.Blinks:Ranked keyword searches on graphs.In SIGMOD Conference Proceedings,pages 305-316,2007)会导致本来很快能找到的答案要延误很久才会找到。所以,本发明使用了一种搜索策略,先从较小的前线中的挑选节点访问,可以有效地解决这个问题。具体实现方法为将所有的迭代器都放入一个按迭代器大小排序的优先队列,每次访问都是弹出最小的迭代器再从中弹出节点。如果一个迭代器为空,就调用尝试终止函数;如果不为空,那么将它再放回优先队列中。如果优先队列为空,那么就可以强制停止搜索过程,因为此时已无法找到更多的答案了。
下面将具体介绍节点访问和尝试终止的方法。
4.2.1.节点访问
搜索过程中要保留必要的信息,如一个节点被哪些关键词访问过,它们之间的最短距离是多少,这条最短路径上该节点的前驱结点是哪一个。如图11所示,节点访问函数就是维护这些信息并利用它们进行处理。每个节点都有一个最短距离数组和一个前驱节点数组,其维度与查询中关键词的个数相同。最短距离数组的元素初始值都是正无穷,当被第i个关键词访问时其第i个元素的值就更改为最短距离,相应地前驱数组的第i个元素也记录下其前驱节点。如果最短距离数组中所有的元素都小于正无穷,那么就以此节点为根,通过前驱节点数组回溯到各个关键词的匹配节点,生成一棵答案树(答案生成函数的具体过程略);否则,如果已找到k个答案并且以此节点为根的答案树的最小估计评分大于排序第k的答案,就将此节点标记为失败,以后再访问时只更新前驱节点的信息而不再进行其它处理。
关于以一个节点为根的答案树的最小估计评分,其计算为:如果该节点已被某一个关键词访问过,则它到这个关键词的最短距离已知,如果还没有,则用这个关键词的前线中目前所有未被访问节点的最短距离的最小值作为它到这个关键词的最短距离,最后将它到所有关键词的最短距离求和,作为最小估计评分。
4.2.2.尝试终止
因为本发明所使用的搜索算法是查找top-k答案,所以关键在于如何在发现了最好的k个答案后就及时终止。本发明所使用的搜索算法的终止条件的设计源于“阈值算法”,可以保证终止时已经找到了top-k答案(证明请参考R.Fagin.Combining Fuzzy Information fromMultiple Systems.In PODS Conference Proceedings,pages 1-10,1998)。如图12所示,尝试终止函数首先检查是否已找到k个答案并且是否所有的迭代器的最短距离之和大于排序第k的答案,如果是则进一步检查,否则就退出,继续搜索。进一步检查是将所有已被访问且未被标记为失败的节点逐个进行处理,如果对以一个节点为根的答案树的最小估计评分大于排序第k的已有答案,则将它标记为失败,否则就退出,继续搜索。如果处理完所有节点后仍未退出,则说明已找到了top-k答案,调用结果输出函数。
4.3.结果输出
结果输出的目的是将结果集中的前k个答案树按顺序输出,在此过程中还需要在图数据库中找到与答案树中各个节点的内容信息,按一定的形式作为一个整体呈现给用户。这部分内容比较繁琐且不属于本发明的核心内容,所以不做详细介绍。
以上实施例仅供说明本发明之用,而非对本发明的限制,有关技术领域的技术人员,在不脱离本发明的精神和范围的情况下,还可以作出各种变换或变型,因此所有等同的技术方案,都落入本发明的保护范围。

Claims (4)

1.一种基于图索引的图数据库关键词邻近搜索方法,包括线下的索引构建步骤和线上的搜索步骤,其特征在于:
所述的线下的索引构建步骤包括以下子步骤:
①为向有权重图G=(V,E,w)定义了一种d-距离子图;无向有权重图G有节点集合V,
所述d-距离子图为,给定一个期望距离d,对于图中任一节点v∈V,以v为中心的d-距离子图为
Figure FDA0000159079610000011
其中,图中节点
Figure FDA0000159079610000012
当且仅当u与v的距离不大于d,图中边
Figure FDA0000159079610000013
当且仅当
Figure FDA0000159079610000014
Figure FDA0000159079610000015
②给定子图中节点个数上界B,采用一种不完整的Dijkstra算法来生成以图中某一节点为中心的d-距离子图;
③对已生成的子图进行过滤,保证所有最终得到的子图都不被其它子图完全覆盖;
④将得到的最大d-距离子图都保存在子图库中,并构建从节点到子图的索引;
所述最大d-距离子图为,当且仅当它不会被任何其它d-距离子图所覆盖,它的节点集合不是任何其它d-距离子图的节点集合的真子集;
⑤设计一种d-距离图索引结构,每个关键词的索引条目包括了所有包含该关键词的d-距离子图的id,以及每个子图中包含了该关键词的节点id的集合;子图或节点的id是一个能够唯一标识该子图或节点的值;
⑥将d-距离图索引按解释型方式存储;
所述线上的搜索步骤包括以下子步骤:
①将图中所有的边都以十字链表的结构常驻在内存中;
②给定关键词查询,在图索引中检索,找出所有匹配子图及其匹配节点集合;
③组合所有匹配子图,得到组合子图;
④使用搜索算法在组合子图中进行搜索并输出top-k答案;
所述线上的搜索步骤中的搜索算法为图的关键词邻近搜索算法,包括:
通过查d-距离图索引,获得包含各个关键词的子图集合与每个子图中包含某个关键词的节点集合;
通过计算各个关键词的子图集合的交集,得到关键词查询的匹配子图集合,这些匹配子图中可能包含了关键词查询的最优答案集合;
调用子图组合函数来得到真正需要进行搜索的组合子图,组合子图是无向有权重图G的一个子图,其节点数与边数一般情况下远小于无向有权重图G,而且在组合子图中搜索可以避免在多个匹配子图中分别搜索时所可能存在的因子图重叠而导致的性能下降问题;
调用搜索函数在组合子图中寻找top-k答案,最后返回查询结果。
2.根据权利要求1所述的基于图索引的图数据库关键词邻近搜索方法,其特征在于,对每个新生成的d-距离子图都要进行最大化处理,包括以下步骤:
先将已生成的最大d-距离子图放入集合M,然后逐个取出与新生成的d-距离子图作比较,直到M为空或发现新生成的子图不是最大的或与某个已有子图相同;
如果新子图是最大的且不与任何已有子图相同,那么将它加入到最大d-距离子图集合中;
在此过程中,如果发现已有的子图被新子图覆盖,则将这个子图从最大d-距离子图集合中移除。
3.根据权利要求2所述的基于图索引的图数据库关键词邻近搜索方法,其特征在于,最终的最大d-距离子图的生成步骤为:
对图数据库的节点集合V中的每一个节点,先调用生成函数来生成以此节点为中心的d-距离子图,然后调用最大化函数来实现所有已生成的子图都是最大的,在遍历V中所有节点后算法停止,返回最大d-距离子图集合。
4.根据权利要求3所述的基于图索引的图数据库关键词邻近搜索方法,其特征在于:
在d-距离图索引的逻辑结构中,一个关键词k的入口项结构为集合
Figure FDA0000159079610000021
其中,Si是包含了关键词k的最大d-距离子图,
Figure FDA0000159079610000022
是子图中包含了关键词k的节点集合。
CN201110074569A 2011-03-28 2011-03-28 基于图索引的图数据库关键词邻近搜索方法 Expired - Fee Related CN102163218B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110074569A CN102163218B (zh) 2011-03-28 2011-03-28 基于图索引的图数据库关键词邻近搜索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110074569A CN102163218B (zh) 2011-03-28 2011-03-28 基于图索引的图数据库关键词邻近搜索方法

Publications (2)

Publication Number Publication Date
CN102163218A CN102163218A (zh) 2011-08-24
CN102163218B true CN102163218B (zh) 2012-10-10

Family

ID=44464445

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110074569A Expired - Fee Related CN102163218B (zh) 2011-03-28 2011-03-28 基于图索引的图数据库关键词邻近搜索方法

Country Status (1)

Country Link
CN (1) CN102163218B (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102799681B (zh) * 2012-07-24 2014-11-12 河海大学 一种面向任意段数据的Top-k查询方法
CN103369570B (zh) * 2013-07-19 2016-04-06 无锡清华信息科学与技术国家实验室物联网技术中心 在无线传感器网络中分布式Top-k查询方法
CN103646079A (zh) * 2013-12-13 2014-03-19 武汉大学 一种用于图数据库搜索的分布式索引及其并行生成方法
CN105051725B (zh) 2013-12-30 2018-11-20 华为技术有限公司 一种图数据查询方法及装置
CN105740246B (zh) * 2014-12-08 2019-08-06 北京邮电大学 基于图数据的集合关键字查询方法
CN111343241B (zh) * 2015-07-24 2022-12-09 创新先进技术有限公司 一种图数据更新方法、装置及系统
US9378303B1 (en) * 2015-09-18 2016-06-28 Linkedin Corporation Representing compound relationships in a graph database
CN105260465B (zh) * 2015-10-16 2018-10-30 晶赞广告(上海)有限公司 一种图数据处理服务的方法、装置
CN107402927A (zh) * 2016-05-19 2017-11-28 上海斯睿德信息技术有限公司 一种基于图模型的企业关联关系拓扑建立方法及查询方法
US10445361B2 (en) * 2016-12-15 2019-10-15 Microsoft Technology Licensing, Llc Caching of subgraphs and integration of cached subgraphs into graph query results
US10242223B2 (en) 2017-02-27 2019-03-26 Microsoft Technology Licensing, Llc Access controlled graph query spanning
WO2018214097A1 (zh) * 2017-05-25 2018-11-29 深圳大学 一种基于ksp算法的资源描述框架查询方法和系统
CN107239665B (zh) 2017-06-09 2020-03-10 京东方科技集团股份有限公司 医疗信息查询系统及方法
CN107562800B (zh) * 2017-08-07 2020-06-05 中山大学 基于SFp-Link的半结构化数据频繁模式挖掘方法
CN107688620B (zh) * 2017-08-11 2020-01-24 武汉大学 一种面向Top-k查询的查询结果即时多样化的方法
CN109582698B (zh) * 2017-09-29 2021-08-13 上海宽带技术及应用工程研究中心 多个连续top-k关键词查询结果更新方法、系统、存储介质及终端
CN109299337B (zh) * 2018-10-19 2022-05-13 南威软件股份有限公司 一种基于迭代的图搜索方法
CN110234063B (zh) * 2018-12-21 2021-09-21 南京工程学院 基于uwb的室内定位方法
CN109871415B (zh) * 2019-01-21 2021-04-30 武汉光谷信息技术股份有限公司 一种基于图数据库的用户画像构建方法、系统及存储介质
CN110516029B (zh) * 2019-08-14 2022-06-10 出门问问创新科技有限公司 一种数据处理方法、设备及计算机存储介质
CN111581032B (zh) * 2020-05-21 2023-06-27 抖音视界有限公司 操作数据以及回滚数据的方法、装置、设备及存储介质
CN115168661B (zh) * 2022-08-31 2022-12-02 深圳市一号互联科技有限公司 原生图数据处理方法、装置、设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Sanjay Agrawal、Surajit Chaudhuri、Gautam Das.《DBXplorer:A System for Keyword-Based Search over Relational Databases》.《IEEE COMPUTER SOCIETY》.2002, *
文继军、王珊.《SEEKER:基于关键词的关系数据库信息检索》.《软件学报》.2005,第16卷(第7期),1270-1281. *

Also Published As

Publication number Publication date
CN102163218A (zh) 2011-08-24

Similar Documents

Publication Publication Date Title
CN102163218B (zh) 基于图索引的图数据库关键词邻近搜索方法
CN106227800B (zh) 一种高度关联大数据的存储方法及管理系统
CN107291807B (zh) 一种基于图遍历的sparql查询优化方法
Liu et al. U-skyline: A new skyline query for uncertain databases
Cheng et al. Top-k graph pattern matching over large graphs
EP2843567B1 (en) Computer-implemented method for improving query execution in relational databases normalized at level 4 and above
US20090240682A1 (en) Graph search system and method for querying loosely integrated data
CN107491487A (zh) 一种全文数据库架构及位图索引创建、数据查询方法、服务器及介质
CN111639075B (zh) 一种基于扁平化r树的非关系数据库矢量数据管理方法
CN106874425B (zh) 基于Storm的实时关键词近似搜索算法
CN103646079A (zh) 一种用于图数据库搜索的分布式索引及其并行生成方法
CN102999637B (zh) 根据文件特征码为文件自动添加文件标签的方法及系统
Xirogiannopoulos et al. Graphgen: Adaptive graph processing using relational databases
CN104391908B (zh) 一种图上基于局部敏感哈希的多关键字索引方法
CN106156319A (zh) 可伸缩的分布式的资源描述框架数据存储方法及装置
CN110109948A (zh) 数据查询方法、计算机设备及计算机可读存储介质
CN106156171A (zh) 一种面向虚拟资产数据的查询优化方法
Cappellari et al. A path-oriented rdf index for keyword search query processing
Salehpour et al. A comparative analysis of knowledge graph query performance
CN103365960A (zh) 电力多级调度管理结构化数据的离线搜索方法
Yadav et al. Wavelet tree based hybrid geo-textual indexing technique for geographical search
KR101081726B1 (ko) GPU를 이용한 R-tree에서의 범위 질의의 병렬 처리 방법
Aung et al. Index structure for nearest neighbors search with required keywords on spatial database
Zhao et al. Join Query Performance Optimization Based on Convergence Indexing Method
Zhang et al. PaIndex: An online index system for vehicle trajectory data exploiting parallelism

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: 20121010

Termination date: 20130328