基于PAT Tree的Internet搜索引擎分布式数据库

selina66 2003-10-17 10:07:41
一.引言
随着互联网的发展,搜索引擎已经成为互联网上必不可少的工具。我们都知道,因特网上的信息资源非常庞大,并且仍在不断地增长着。所以网络搜索引擎必须用分布式数据库对这些网页进行索引。同时,这些数据信息覆盖了几十种语言和各种网络协议,不可能将它们简单的结构化。因此,为搜索引擎定制高效的、非结构化的分布式数据库成为现今搜索引擎研究工作中的难点。
那么,为了适应全文检索和互联网信息的特点,全文搜索引擎的数据库应具有下面的特点:
<1>分布式。由于互联网上的数据量太大,不可能在一台计算机中储存所有的数据,因此必须对数据进行分布处理。
<2>具有非常高的检索效率和检索速度。
<3>可以高效地添加和删除数据。
互联网上的数据几乎每一秒钟都在变化,因此搜索引擎的数据
库必须能够高效率地处理数据的添加和删除工作。
<4> 能够方便地扩充容量。互联网的发展十分迅速,几年的时间,其数据量就会成倍地增长。对于正在运行的搜索引擎来说,需要它们不断地扩大自身的容量,这包含两方面的意义。一是增加计算机的存储量,二是增加作为数据库的计算机的数量。
<5>适合搜索引擎本身检索的算法。搜索引擎通常要给用户提供更加方便的功能,使用户可以更加有效地找到需要的信息。这些功能可以让用户指定时间、地域、特定网站、布尔逻辑检索、位置逻辑检索等附加条件进行检索,对检索到的数据按照其相关性进行排序,二次检索等。有的搜索引擎还提供了多种检索方式。搜索引擎的数据库要能够在不增加系统负担的前提下提供这些功能。
二.PAT Tree技术
基于PAT Tree技术的全文搜索引擎数据库的优点:具有比传统检索方法快20%~30%的检索速度,而添加和删除一条数据所需要的时间仅仅是传统方法的25%和12%。同时,它的树结构可以方便的进行数据库扩容。可以很方便的实现附加条件的检索,相关性排序,二次检索等功能。
PAT Tree是一种压缩二叉查询树,它将关键词作为二进制位串记录在树的结构中,从根结点到叶子结点的每一条路径都代表一个关键词位串。在PAT Tree中,关键词的具体信息都保存在叶子结点上, PAT Tree的内部结点则用来记录关键词的路径,它有三个基本的数据项:比较位、左指针、右指针,其中,左指针和右指针分别指向该结点的左、右子树,比较位记录的是从根结点到达该结点的所有位串中第一个不相同位的位置。由于比较位的存在,途经该结点的位串将选择不同的后继路径,当比较位为0[数字]时,位串转向左子树, 比较位为1时,位串转向右子树。由于只比较不同的位,所以PAT Tree的查询速度极快。
由于引入了比较位,避免了对关键词的逐位比较,保证了PAT Tree中每一个内部结点都有左、右两棵子树,所以, PAT Tree为满二叉树。这也就表明,当PAT Tree中存有n个关键词即n个叶子结点时,其内部结点为n-1个,总结点数为2n-1,所以PAT Tree的空间复杂度为O(n)。
举例:判断查询词是否存在于数据库中,只须从PAT Tree的根结点出发,根据查询词的位串(包括结尾处的′\0[数字]′)在PAT Tree中寻找路径。情况一:若比较完所有位后,查询词位串不能到达叶子结点,则可以断定该查询词不在索引中。情况二:在查询词位串到达叶子结点时,由于只对查询词中某几位进行了比较,并不能保证查询词与叶子结点中的关键词一定是相同的,在这种情况下,还要对两者进行一次字符串的比较。
向PAT Tree中添加一个数据要经过两次查询。第一次查询找出待添加关键词与索引中所有关键词第一个不同位作为比较位,形成相应的内部结点和外部结点;再进行一次查询,将新建结点插入到PAT Tree中。
要删除一个关键词,首先对待删除词进行一次查询,找到待删除词存在的叶子结点,将此叶子结点及其父结点从树中删除,将其父结点的另一个子树(或叶子结点)直接连在其祖父结点上。当PAT Tree只有一个根结点和两个叶子结点时,只删除待删除词所在的叶子结点。
PAT Tree只要进行为数不多的位比较和几次字符串比较,就能完成各种查询和更新功能,在速度上较其它的机制有明显的优势,同时它的数据结构简单,易于实现。以下对PAT Tree的性能与传统的逐字二分索引进行了比较。比较的结果如表1所示:

三.分布式数据库的设计
基于PAT Tree的数据库具有极佳的分布性能。PAT Tree的数据是按照二叉树的方式进行存储的,所以当要进行分布存储时,只需要将树的子树放在不同的计算机(从服务器)上,并且在主服务器上维护一个从服务器和子树的关键词映射表。如图1所示。(图形不能显示,请大家见谅)

其中, PAT Tree索引是分布式数据库的主要部分,它用用户提出的查询关键词进行索引。关键词映射表是一个Hash关键词索引与全文内容、分布位置之间的一个映射。通常,库维护模块, PAT Tree索引和关键词映射表放置于主服务器上,主服务器通过以太网与各从服务器(分支数据库)相连。
如:当其中的一个服务器上的数据量过大,需要将其分别放在几台从服务器的时候,我们可以简单地把该子树的两个子树放在不同的新服务器上,然后更新主服务器上的关键词映射表。
四.Internet搜索引擎
以上面的数据库为基础,我们构建了一个FTP搜索引擎。
这是在构建大型Web搜索引擎之前进行的小规模可行性试验。
利用分布式的FTP搜索引擎代替Web搜索引擎可以模拟Web搜索引擎的运行,用户的查询,相关性排序等功能,实际考查PAT Tree对数据查询、添加、修改和删除的速度。还可以对数据的分布性能进行实际考查,检验分布方式是否保持高效率。同时, FTP搜索引擎也具有较高的实用价值。

4.1 分布式FTP搜索引擎的设计
系统的设计目标如下:系统的有效检索点不少于八百万,关键词不少于一百万个,URL不少于五十万个。其中关键词是每一个URL中由斜杠“/”分隔的字符串。检索点是系统可查询的特定字符串。例如,关键词Tools的检索点是Tools、ools、ols、ls和s。
系统运行环境。由三台微机组成分布式环境,安装Linux操作系统。每台微机内存不小于512MB,CPU为PⅢ500。其中,一台作为Web服务器和库维护模块,其余两台作为PAT Tree分支数据库。计算机之间用百兆以太网互联。

搜索引擎由查询模块、数据库维护模块和分布式数据库组成,如图2所示。数据挖掘工具采集的数据(URL等)由库维护模块分析并添加到URL索引库, PAT Tree索引和关键词映射表中。用户的查询由查询模块处理,查询模块首先在PAT Tree索引库中找到相应的keyID,然后利用keyID在关键词索引表中找到相应的urlID,最后在分支数据库中查找到所需的URL。由前面的论述,在PAT Tree中查找keyID是一个查表的过程,而根据keyID查找urlID和根据urlID查找URL也是一个查表的过程,因此这一结构具有极快的查询速度。

4.2 主要模块说明
数据库维护模块包括URL索引程序、关键词索引程序、添加代理和库添加程序四个部分。数据库维护模块利用搜索软件从FTP站点上搜索到文件的目录、类型、大小和创建时间等信息,并且将它们写入到关键词文件中,然后将对应的ID号添加到PAT Tree索引数据库中。如图3所示。


查询模块由查询预处理、查询代理和查询程序三个部分组成。如图4所示。它使用用户的查询条件从PAT Tree数据库中查询到符合的数据,并且将它们返回给用户。查询程序采用了磁盘缓存技术来提高检索的效率。当得到用户的查询请求后,查询程序将它提交给查询预处理程序。预处理程序首先在缓存中查找,如果能够在缓存中找到符合条件的URL,那么就从缓存中直接返回相关的信息;如果找不到,查询模块调用查询代理,在数据库中找到符合条件的URL。最后将查询的结果放入缓存。
五.结论
本文对Internet搜索引擎的数据库特点进行了分析,研究了利用PAT Tree作为Internet搜索引擎分布数据库索引的可行性。并且以这些理论为基础,建立了基于PAT Tree的FTP搜索引擎。
而该用PAT Tree作为Internet搜索引擎的数据库经过试运行,也证实了它的合理性,满足了搜索引擎对数据库系统的基本需要。因此,PAT Tree作为分布式数据库的索引是可行的,数据库扩容方便,数据库具有较高检索效率。


...全文
61 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

7,388

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 数据仓库
社区管理员
  • 数据仓库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧