1、SEEKER:基于关键词的关系数据库信息检索SEEKER: Keyword-Based Information Retrieval over Relational DatabasesWen JJ, Wang S. SEEKER: Keyword-Based information retrieval over relational databases. Journal of Abstract: Traditionally, SQL is the main interface to access data from relational databases. However, it is dif
2、ficult for inexperienced end users to learn the complicate syntax of SQL. Enabling keyword-based information retrieval over relational databases will allow users to acquire information from databases without any knowledge of SQL and underlying database schema, just like the way of common search engi
3、nes. In this paper, we describe the design and implementation of SEEKER, a system supporting keyword-based information retrieval over relational databases. While there have been some existing systems that support searching text attributes in relational databases, SEEKER can also search database meta
4、data and numeric attributes. Moreover, SEEKER employs an improved ranking function and supports Top-k queries. The experimental results show that SEEKER could achieve good retrieval performance.Key words: relational database; keyword query; information retrieval; top-k query摘 要: 传统上,SQL 是存取关系数据 库中数据
5、的主要界面.但是,对 于没有经验的用户来说,学习复杂的 SQL 语法是一件困难的事情.实现基于关键词的关系数据库信息检索,将使用户不需要任何 SQL 语言和底层数据库模式的知识,用搜索引擎的方式来获取数据库中的相关数据.描述了一个基于关键词的关系数据库信息检索系统SEEKER 的设计和实现.现有的关系数据库关键词查询系统只能检索关系数据库中的文本属性,而 SEEKER 还可以检索数据库元数据以及数字属性.并且,SEEKER 采用了更合理的排序公式,支持 Top-k 查询.实验结果显示,SEEKER 具有良好的查询性能.关键词: 关系数据库;关键词查询;信息检索;Top- k 查询关系数据库是一
6、种主要的信息存储机制.SQL 语言是关系数据库的标准查询语言,对普通用户来说,SQL 语言既难学习,又难使用.并且,用户查询关系数据库中的数据时,必须知道这个数据库的数据模式.当关系数据库隐藏在网页后面或在 P2P 网络里共享时,用户很难获知它们的数据模式 ,因此无法用 SQL 语言进行查询.关键词查询是查询文档和网页的最简单、最流行的信息检索技术,关键词查询直观易用,不需要学习查询语言,也不需要知道查询对象的底层结构.实现基于关键词的关系数据库信息检索,将使用户不需要任何 SQL 语言和数据库模式的知识,像使用 Google 那样通过提交关键词来获取数据库中的相关数据 .本文实现了一个基于关
7、键词的关系数据库信息检索系统 SEEKER,与现有的关系数据库关键词查询系统相比,SEEKER 不仅可以检索关系数据库里的文本属性(CHAR,VARCHAR 等),还可以检索数据库的元数据( 关系名、属性名等) 以及数字属性(DATE,TIME,INT,FLOAT,NUMERIC 等);并且 ,SEEKER 采用了更合理的评分公式对查询结果排序,将 Top-k 结果返回给用户 .本文第 1 节介绍与本文相关的工作;第 2 节概略描述 SEEKER 的基本方法;第 3 节详细介绍 SEEKER 的体系结构和算法;第 4 节用实验来评测 SEEKER;第 5 节总结全文并概述未来的研究方向.1 相
8、关工作文本文档和网页的关键词检索已经是成熟的研究领域.近年来,结构化和半结构化数据的关键词查询开始引起研究人员的兴趣.Oracle 1,DB22,SQL Server3等关系数据库都提供了文本搜索扩展 ,可以为数据库中的文本建立全文索引(倒排表索引 ),这为实现关系数据库的关键词查询提供了一个基础 .已经有几个关系数据库关键词查询系统被开发出来:BANKS 4,DBXplorer5,DISCOVER6,IR-Style7,EKSO8和 ObjectRank9.这些系统的基本思路是一致的,即将数据库看作是由数据库中的元组(顶点) 通过主码-外码关系( 边) 连接而成的图.当用户给出一个关键词查询
9、,通过全文索引从图中找出含全部关键词的最小子图作为查询结果.数据库关键词查询系统可以分为在线查询和离线查询两大类.在线系统将关键词查询转换为 SQL 查询,通过SEEKER:基于关键词的关系数据库信息检索 1271实时查询数据库来生成查询结果.由于转换而成的 SQL 查询中有大量的连接操作,所以在线系统的查询速度较慢.在线系统提高查询速度的关键在于减少数据库,尤其是磁盘的访问次数.BANKS 解决查询速度慢的方法是将整个数据库都放在内存中,显然这种方法只适用于中小数据库.当用户提交一个关键词查询,DISCOVER 首先用 Oracle的全文索引为每一个关系生成含不同关键词组合的元组集合,然后根
10、据数据库模式图生成元组集合模式图,再从中找出包括全部关键词的子图(树),将子图转换为 SQL 查询,最后查询数据库得到查询结果.IR-Style 对 DISCOVER进行了改进,利用信息检索的文本相关排序策略对查询结果进行排序,将 Top-k 查询结果返回给用户.IR-Style 提出了几种算法来提高查询效率,但效果并不理想.离线系统通过预先计算生成中间结果,当用户提交关键词查询时,根据中间结果生成查询结果,因此,离线查询系统的响应时间较短.但是,由于离线系统需要一个预先计算过程,并且在数据库更新后必须重复这个昂贵的计算过程,所以离线系统仅适用于更新很少的数据库.EKSO 和 ObjectRa
11、nk 是典型的离线系统.XML 数据的关键词查询是对 XML 查询语言的一个有益扩充.Goldman 等人 10研究了存储在关系数据库中的XML 数据的关键词查询.Florescu 等人 11对 XML 查询语言进行了扩展,实现了元素粒度的关键词查询.Xkeyword 12将 XML 数据视作有向标记图,查询结果是 XML 片断连接成的树,树中包含全部关键词,根据树中边的数量多少进行排序.XRANK 13用关键词查询 XML 文档,返回结果是元素形成的树 ,树中包含所有的关键词,并使用一个排序公式对查询结果排序.现有的关系数据库关键词查询系统的不足之处主要有:(1) 不支持对数据库的元数据的关
12、键词查询.数据库中的一些元数据,比如关系名和属性名,是可以用关键词来查询的.(2) 不支持对非文本属性的关键词查询.现有的系统很好地支持了文本属性的关键词查询,但是关系数据库中还存在着大量的非文本属性.例如,要从图 5 的 DBLP 数据库里查询 Jim Gray 在 1990 年后发表的关于 Transaction 的论文,用 SQL 语言表示这个查询:SELECT a.Name, p.Title, p.Year FROM AUTHOR a, PAPER p, WRITE wWHERE a.AuthorId=w.AuthorId AND p.PaperId=w.PaperId ANDa.Na
13、me=Jim Gray AND p.Title LIKE %Transaction% AND p.Year=1990现有的系统无法进行这种查询.(3) 做了一些不必要的限制.例如,现有的系统都要求查询结果包含所有的关键词,这样可以提高查询效率.但是,如果数据库里没有包含某个关键词,用户将得不到任何查询结果.包含部分关键词的查询结果可以帮助用户改进查询.本文的研究目标是构建一个能有效解决上述问题的关系数据库关键词查询系统.2 方法概述2.1 问题定义一个包含 n 个关系 R1,Rn 的数据库 DB,可以将它看成一个有向图 G,DB 中的每一个关系就是 G 的一个顶点,每一个主码-外码关系就是 G
14、 的一条有向边 ,方向由主码所在的关系 Ri G 指向外码所在的关系 Rj G,记为e(Ri,Rj),将 G 称为模式图(schema graph),例如图 5 所示的 DBLP 数据库模式图 .模式图中允许自环和多重边存在.实际上,有向边可以是两个关系间任意一种连接关系,在 SEEKER 中暂时只考虑主码-外码连接关系.一个关键词查询Q 由一组关键词 kw1,kwm 组成,表示为 Q(kw1,kwm).定义 1. 连接元组树 TT 是以数据库 DB 中的元组为结点的一棵树,树中任意两个相邻的元组 ti Ri,tj Rj,它们之间的边 e(ti,tj)=e(Ri,Rj) G 且( ti tj)
15、 (Ri Rj).TT 的大小是它拥有的元组的数量,记为 sizeof(TT).定义 2. 查询结果是含至少一个 Q 中的关键词且每个叶结点都含至少一个 Q 中的关键词的连接元组树.定义 2 和 BANKS4、DISCOVER 6以及 IR-Style7的定义相类似,但 SEEKER 不要求查询结果包含全部关键词,只要求查询结果包含关键词的一个非空子集.2.2 查询语言SEEKER 要实现对数据库的元数据和数字属性的关键词查询,必须对查询语言进行扩展.SEEKER 的查询语言包含 3 类关键词:(1) Keyword;(2) Keyword:Keyword;(3) Keyword: op Va
16、lue.第 1 类关键词用来查询文本属性.第2 类关键词用来对文本属性进行包含元数据的查询,“:”前的 Keyword 用来匹配关系或属性,“:” 后的关键词用来对匹1272 Journal of Software 软件学报 2005,16(7) 配上的关系或属性进行关键词查询.例如,在关键词查询“Author:Jim Gray”里,对“Jim Gray”的查询将被限制在和“Author”相匹配的关系或属性上.第 2 类关键词可以帮助用户更精确地表达查询要求.例如,查询“Knuth Algorithm”和“Author:Knuth Algorithm”会产生不同的查询结果,原因是 Knuth
17、即可能是作者名,也可能出现论文的标题中.采用第 2 类关键词将对 Knuth 的查询限制在 Author 关系上,有效地消除了这种模糊性.第 3 类关键词用于对数字属性的查询,“:” 前的 Keyword 用来匹配属性,“ op Value”部分对匹配上的属性进行条件查询. op 是关系操作符,可以是=, 或 ,Value 是属性的值 .第 1 节中的 SQL 查询可以用 SEEKER 的查询语言表示为“Jim Gray Transaction Year:=1990”.第 3 类关键词将数据库中的数字属性纳入到关键词查询的范围内,使用户可以更精确地表达查询要求.3 系统体系结构SEEKER 由
18、以下几个模块组成(如图 1 所示):语法分析,IR 引擎,候选评分表连接树集合的生成和 Top-k 查询结果生成.本节将详细描述这几个模块,并用关键词查询“Author: Jim Gray Transaction Year:=1990”作为实例来说明SEEKER 的查询过程.3.1 语法分析如第 2.2 节所述,用户提交的查询是 3 类关键词的组合,这就需要对查询进行语法分析,将不同形式的关键词识别出来,分别存储,以便于 IR 引擎采用不同的方法进行处理.对第 1 类关键词,SEEKER 的语法分析器将它们识别出来,放入一个数组中存储.SEEKER 允许用户用双引号或单引号将多个单词合并为一个
19、关键词,例如输入“Jim Gray”,SEEKER 将把它作为一个单一的关键词处理 .对第 2 类的关键词,“:” 前后的关键词被分别放入不同的数组中,关键词的识别方法与第 1 类关键词相同.对第 3 类关键词,Keyword, op 和 Value 被分别识别出来,放入不同的数组中存储.对于 Value,还要识别出它的数据类型 ,辅助 Keyword 匹配相关属性.如果有两个以上的第 3 类关键词,它们的 Keyword 相同,语法分析器将把它们合并为一个关键词.例如,对查询“Jim Gray Transaction year:=1990 year:=1990”和“year:=1990”;生
20、成的评分表是:AUTHOR “Jim Gray”,AUTHOR,PAPER“Transaction”如果 i=j,即在自环 的情况下,不添加边e(STi,p,STj,p).因此,在评分表图GST 中可能存在多重边,但没有 自环.图 4 是查询实例生成的评分表图.Fig.3 Basic score table图 3 基本评分表ROWID SCORERowid 1Rowid 2Score 1Score 2Fig.4 Score table graph of query example图 4 查询实例的评分表图AUTHOR“Jim Gray”AUTHORWRITE CITEPAPER“Transac
21、tion”如果关键词数量相同,较小的候选评分表连接树排在前面.可以证明,算法 1 满足以下定理:定理 1(完全性和无重复性). 算法 1 生成的候选评分表连接树集合 CTSet 里无重复地包含所有满足条件sizeof(CT) MaxCTSize 的候选评分表连接树 CT GST(证明略).查询实例生成的候选评分表连接树有 AUTHOR“Jim Gray” WRITE PAPER“Transaction”sizeof(TT)是 TT 中所含元组的个数,它与该结果的得分成反比;T i 是 TT中的元组;Q 是一个关键词查询,m 是 Q 中关键词的个数,kw j Q;m 是 TT 中所含关键词的数量
22、;a 是常数,取大值(例如 10)来保证含关键词多的查询结果比含关键词少的查询结果的得分高;Score(T i,kwj)是元组 Ti 对于关键词 kwj所得的分数, 是元组 Ti 所在评分表的 SCORE 列的值.j jikwScore1),推论 1(查询结果比较). 对关键词查询 Q 产生的两个查询结果 TT1 和 TT2,如果 TT1 所含的关键词数量小于TT2 所含的关键词数量 ,则 Score(TT1,Q)Score(TT2,Q).DBXplore5和 DISCOVER6采用了简单的评分策略 :查询结果包含的元组越少越好.IR-Style 7的评分公式不仅考虑了查询结果的大小,还考虑了
23、查询结果和关键词查询的相关性,但由于要求查询结果包含全部关键词,因此没有考虑含部分关键词的查询结果的评分.BANKS 4和 ObjectRank9采用了类似 PageRank 的评分方法,PageRank 对于网页排序是非常有效的,但对关系数据库中的元组排序的有效性还有待验证.3.4.2 Top-k 查询结果生成算法候选评分表连接树 CT(ST1,STn)的最大可能分数是组成它的所有评分表的最大分数的和,即, 是投影关系运算.在查询过程中,假设当前的 Top-k 查询结果中的第 k 个ni iscoreSTQCTScore1max),(Max结果的分数为 Scorek,如果 MaxScore(
24、CT,Q) Scorek,那么 CT 可以安全地移除而不会对 Top-k 查询结果有任何影响.为了提高连接操作的效率,应该尽可能减少参与连接操作的元组数.对参与连接的某一个评分表 STj 来说,要产生比 Scorek 得分更高的查询结果,只有满足以下条件的行 row 才有可能: .)(rowscekScrenji iscoreST,1)(max同理,对于两个相邻的评分表 STp 和 STq,它们的行 rowp 和 rowq 应该满足以下条件.这些条件都被加入 SQL 查询中来加快查询速度.查询结npi iscorekqscorepscore STScorew,1)(max)()(果根据分数高低
25、排序.算法 2. Top-k 查询结果生成 .输入:有序的候选评分表连接树集合 CTSet,关键词查询 Q(kw1,kwm).输出:Top- k 查询结果 .Results1,k:有序数组,用来存储查询结果,数组里的查询结果按分数高低排序.Resultsk.kws:Resultsk所含 Q 中关键词的数量,查询结果数k 时,为 0.Resultsk.score:Resultsk的分数,查询结果数k 时,为 0.Begin01 for 候选评分表连接树集合 CTSet 中的每一个候选评分表连接树 CTi,i=1,n do02 if CTi 所含关键词数量 Resultsk.kws then 算法
26、结束,返回 Results /*推论 1*/03 if CTi 所含关键词数量 =Resultsk.kws AND CTi 的最大可能分数 Resultsk.score then goto 0104 将 CTi 转换为 SQL 查询05 执行 SQL 查询 /*查询结果按分数高低排序*/06 while 查询结果不为空 do07 取出查询结果 TT08 if Score(TT,Q)Resultsk.score then 将 TT 插入 Results09 else goto 01SEEKER:基于关键词的关系数据库信息检索 127710 返回 ResultsEnd表 1 是 SEEKER 给出
27、的查询实例的 Top-5 结果.Table 1 Top-5 results of query example表 1 查询实例的 Top-5 结果No. Score AUTHOR WRITE PAPER1 8.33 Jim Gray Database and transaction processing benchmarks. 19922 8.33 Jim Gray The benchmark handbook for database and transaction systems (1st Edition). 19913 8.33 Jim Gray The benchmark handboo
28、k for database and transaction systems (2nd Edition). 19934 8.33 Jim Gray Database and transaction processing performance handbook. 19935 8.33 Jim Gray . Transaction processing: Concepts and techniques. 19934 实 验4.1 实验设置SEEKER 是在 Oracle 9i 上开发的,采用 JAVA 语言编写,语法分析部分用 JAVACC 编写,和 Oracle 的接口是JDBC.我们用实验评
29、测了 SEEKER,评测是在 DBLP15数据集上进行的.我们将 DBLP 网站提供的 XML 文件按照图 5 的模式分解成 4 个关系:AUTHOR 中有 294 062 个元组;PAPER 中有 446 409 个元组;WRITE 中有1 000 099 个元组 ;CITE 中有 111 357 个元组.AUTHOR 和 PAPER 上建立了全文索引,所有的外码和数字属性上也都建了索引.实验是在一台有 512M 内存的 Pentium IV 2.5 GHz 的微机上进行的 ,操作系统是 Windows XP.Fig.5 The DBLP database schema graph图 5 D
30、BLP 数据库模式图4.2 查询效果本节用查准率(precision)和查全率 (recall)来衡量 SEEKER 的查询效果 ,查准率和查全率的计算公式如下:(6)ARecisonPra(7)la其中,|R a|是返回的查询结果集中与查询相关的连接元组树的数量;|A|是查询结果集中的连接元组树的数量;|R|是数据库中与查询相关的连接元组树的数量.4.2.1 元数据对查询效果的影响我们构造了一个包含 10 个 SQL 查询的测试集,其中的 SQL 语句都是查询某个作者发表的关于某个主题的论文.在实验中,我们关键词查询来完成 SQL 查询同样的任务,以测试集的查询结果作为基准来计算关键词查询的
31、查准率和查全率,即将 SQL 查询的结果作为 |R|.表 2 和表 3 是根据测试集中的 SQL 查询给出的两组关键词查询,表 2用第 1 类关键词表述,表 3 用第 1 类和第 2 类关键词共同表述.Table 2 Keyword queries without metadata Table 3 Keyword queries with metadata表 2 不考虑元数据的关键词查询 表 3 考虑元数据的关键词查询Knuth algorithm Dijkstra programming Author: Knuth algorithm Author: Dijkstra programming
32、Turing article “Jim Gray”Article Author: Turing article Author: “Jim Gray” articleCodd relational Salton “Information Retrieval” Author: Codd relational Author: Salton “Information Retrieval”Fagin proceeding “C. J. Date” database Author: Fagin proceeding Author: “C. J. Date” databaseHartmanis NP “Ma
33、rvin Minsky” article Author: Hartmanis NP Author: “Marvin Minsky” articleAUTHORAuthorIdNamePrimary key Foreign keyWRITEAuthorIdPaperIdCITEPaperIdCitedPAPERPaperIdTitleYearType1278 Journal of Software 软件学报 2005,16(7) 分别执行测试集中的 SQL 查询和两组关键词查询.图 6 给出了 Top-k 取不同值时,两组关键词查询的平均查准率和平均查全率.从图中可以看出,实现对元数据的关键词查
34、询,提高了查准率和查全率,尤其是在 Top-k 较小的时候更加明显.因此,第 2 类关键词可以帮助用户更精确地表达查询要求,减少查询模糊性.(a) Average precision (b) Average recall(a) 平均查准率 (b) 平均查全率 Fig.6 Metadatas impact on query effectiveness图 6 元数据对查询效果的影响4.2.2 数字属性对查询效果的影响我们构造了一个包含 10 个 SQL 查询的测试集,测试集中的 SQL 语句都是查询某个作者在某段时间内发表的关于某个主题的论文,将 SQL 查询的结果作为 |R|.表 4 和表 5
35、是根据测试集中的 SQL 查询给出的两组关键词查询,表 4 用第 1 类关键词表述,表 5 用第 1 类和第 3 类关键词共同表述.分别执行测试集中的 SQL 查询和两组关键词查询.图 7 给出了 Top-k 取不同值时,两组关键词查询的平均查准率和平均查全率.实验结果证明采用第 3 类关键词可以提高查准率和查全率,尤其是在 Top-k 较小的时候更为明显.第 3 类关键词增强了关键词查询的表达能力,将数据库中的数字属性纳入到关键词查询的范围内,帮助用户更精确地表达查询要求.以上两个实验证明了 SEEKER 对关键词查询语言的扩展是有效的.Table 4 Keyword queries ove
36、r Table 5 Keyword queries over text and numeric attributestext attributes表 4 只考虑文本属性的关键词查询 表 5 考虑文本和数字属性的关键词查询Dewitt database Foster grid Dewitt database year:1990 Foster grid year:=2003Molina peer-to-peer Stonebraker object Molina peer-to-peer year:=2002 Stonebraker object year:1993Jennifer Widom d
37、atabase Jennifer Widom database Year:1995Jiawei Han Data Mining Jiawei Han Data Mining Year:=2000Bernstein concurrency Bernstein concurrency year:=1970 year:=1985Ullman database Ullman database year:1980 Year:2000Rakesh Agrawal Data Mining Rakesh Agrawal Data Mining year:=1997Juris Hartmanis complex
38、ity Juris Hartmanis complexity year:1990(a) Average precision (b) Average recall(a) 平均查准率 (b) 平均查全率0204060801005 10 15 20 25 30 35 40 45 50Top-kAverageprecision(%)Only text attributesAlso metadata0204060801005 10 15 20 25 30 35 40 45 50Top-kAveragerecall(%)Only text attributesAlso metadata0204060801
39、005 10 15 20 25 30 35 40 45 50Top-kAverageprecision(%)Only text attributesAlso numeric attributes0204060801005 10 15 20 25 30 35 40 45 50Top-kAveragerecall(%) Only text attributesAlso numeric attributesSEEKER:基于关键词的关系数据库信息检索 1279Fig.7 Numeric attributes impact on query effectiveness图 7 数字属性对查询效果的影响4
40、.3 各参数对查询响应时间的影响以下 3 个实验的目的是分析 SEEKER 的几个主要参数对查询响应时间的影响,并比较查询过程中各模块耗费的时间.实验中所用关键词都是从 DBLP 数据库中随机抽取的.4.3.1 候选评分表连接树最大允许大小 MaxCTSize 对查询响应时间的影响图 8 显示了候选评分表树最大允许大小对查询响应时间的影响,响应时间是 500 次查询的平均值,查询的关键词数量为 2,Top-k 的 k 值为 10.从图中可以看出 ,随着 MaxCTSize 的增大,查询响应时间也随之增加,这主要是因为候选评分表树数量增大的缘故.我们注意到当 MaxCTSize 分别为 1 和
41、2,3 和 4,5 和 6 时,响应时间几乎相同,原因是对 DBLP 数据库,算法 1 生成的候选评分表连接树集合 CTSet 几乎是相同的.Fig.8 Effect of maximum allowed CT size Fig.9 Effect of Top-k图 8 候选评分表树最大允许大小的影响 图 9 Top-k 的 k 值的影响4.3.2 Top-k 的 k 值对响应时间的影响图 9 是 Top-k 的 k 值对查询响应时间的影响,响应时间是 500 次查询的平均值,查询的关键词数量为 2,候选评分表树最大允许大小为 4.k 值的增大使得查询时间随之增大 ,主要原因是用户要求的查询结
42、果越多,算法 2 需要执行的 SQL 查询越多.4.3.3 查询关键词数量对响应时间的影响图 10 是关键词数量对查询响应时间的影响,响应时间是 500 次查询的平均值,候选评分表树最大允许大小为4,Top-k 的 k 值为 10.从图中可以看出,随着关键词数量的增加 ,响应时间迅速增加 .关键词数量对响应时间的影响要更大一些,这是因为关键词数量的增加使得基本评分表和评分表的数量也随之增加,在最坏的情况下是指数增长,使得候选评分表树数量迅速增加,造成查询时间的迅速增加.Fig.10 Effect of number of keywords Fig.11 Time consumed by dif
43、ferent query steps图 10 关键词数量的影响 图 11 查询过程各阶段耗费时间比较4.3.4 查询过程中各模块耗费时间的分析比较图 10 和图 11 是同一个实验的结果.从图中可以看出,查询过程中最耗费时间的模块是 Top-k 查询结果生成,其次是 IR 引擎.这两个模块都包含对数据库的大量查询和操作,其他模块的工作主要在内存中进行,很少访问数据库,耗费的时间与之相比可以忽略不计.显然,要想进一步减少查询响应时间,应该在这两个模块上下功夫.0100020003000400050001 2 3 4 5 6MaxCTSizeTime(ms)Response timeResults generator0500100015002000250030001 5 10 15 20Top-kTime(ms)Response timeResults generator0200040006000800010000120001 2 3 4 5Number of keywordsTime(ms)Response timeResults generator0100020003000400050006000700080009000Time(ms)1 2 3 4 5Number of keywordsIR engineResults generatorOther