一种分层结构、分布式搜索引擎系统及其实现方法

文档序号:6332544阅读:897来源:国知局
专利名称:一种分层结构、分布式搜索引擎系统及其实现方法
技术领域
本发明涉及分布式搜索引擎系统的设计和实现,具体是指基于WebServices和 RMI (Remote Method Invocation,远程方法调用)的技术联合部署在多个集群上的多个单 元搜索引擎,提供统一的检索服务的分布式搜索引擎服务。
背景技术
随着下一代网络的快速发展,Web2. 0等新一代信息技术的成熟,信息资源呈现分 布化,这为搜索引擎的体系结构设计提出了更多新的挑战。一方面,地理位置分散的异构数 字化信息中包含了大量宝贵的资源,用户迫切地需要从这些信息中找到所需信息;另一方 面,虽然单个集中式搜索引擎的处理能力不断提高,但是在如此大规模的条件下,要对这样 海量的信息进行检索,集中式搜索引擎的处理能力毕竟有限,特别需要多个搜索引擎进行 协助工作。而随着互联网信息的爆炸性增长,传统搜索引擎开始显示出一些局限性(一 )搜索深度不够传统搜索引擎只能搜索到Internet上互相链接的表层资 源,而深层资源,比如需要权限才能访问的页面,组织内部的页面和一些网络信息孤岛资源 等都无法索引。(二)时效性较差如果服务器更新周期过长,容易产生大量的无效链接。事实上, 采用网络蜘蛛爬行网络的技术是无法避免无效链接的。只能通过缩短更新周期来尽量减少 无效链接。(三)成本较高海量的资源索引信息需要庞大的服务器来维护。每一条检索请 求都将发送给服务器来处理,因此要求服务器有强大的处理能力、存储能力以及网络带宽。

发明内容
本发明的目的之一在于克服上述缺点和不足,提供一种应用于分布式搜索引擎的 分层结构。该结构具有性能好、可靠性高、多样化、专业化以及适用性强等优点。本发明的目的之二在于提供一种分布式搜索引擎系统。本发明的目的之三在于提供上述一种分布式搜索引擎系统的实现方法。本发明的目的之一是通过下述方式实现的,一种应用于分布式搜索引擎的分层结 构,包括物理层、抽象层、应用层和表示层,其中所述物理层是由若干个单元搜索引擎组成,用于接收来自抽象层的检索请求,完 成各个搜索引擎本身的数据检索请求任务,并且通过抽象层发送标准的心跳信息至应用 层,更新其在应用层的状态信息;所述抽象层用于实现物理层与应用层之间消息通信的格式转换;以及用于接收来 自应用层的检索请求,根据单元搜索引擎的异构性将查询请求进行封装,将封装后的查询 请求转发给单元搜索引擎,接收单元搜索引擎返回的检索结果,并发送给应用层;所述应用层用于提供数据应用的用户接口,接收用户的查询请求并将查询请求转 发至抽象层,同时对抽象层返回的检索结果进行输出格式化处理后再提交给表示层;
所述表示层用于为用户提供友好的检索入口和结果显示页面。为更好的实现本发明,所述应用层包括应用服务器和Web服务器,其中所述应用服务器用于实现用户查询信息的转发和查询结果的融合,同时还负责管 理各个单元搜索引擎的生存状态;所述Web服务器用于负责运行前端页面,对搜索结果进行聚类分析的工作。本发明的目的之二是通过下述方式实现的,一种分布式搜索引擎系统,包括Web 服务器、代理节点、查询代理池、抽象适配器和多个工作节点,所述查询代理池由多个查询 节点组成;其中所述Web服务器用于运行分布式搜索引擎系统的前端页面,并对搜索结果进行聚 类分析的工作;所述代理节点用于接受来自Web服务器的查询请求,根据各查询节点的状态进行 查询任务分配,并将选择结果发送给Web服务器;代理节点还用于接受查询节点和工作节 点的注册请求,并管理其生存状态;所述查询节点用于与代理节点进行交互,接收代理节点转发的工作节点状态更新 信息并进行维护,周期性地向代理节点发送状态信息;接收Web服务器的查询请求,并将查 询请求分发到各个工作节点;收到工作节点返回的命中文档列表并进行消重、合并的处理 操作,将处理后的检索结果发送给Web服务器;所述抽象适配器用于接收上层的查询请求,并根据单元搜索引擎接口读取信息的 要求对查询请求信息进行封装转换,抽象适配器将封装转换后的查询请求发送给相应的单 元搜索引擎;接收单元搜索引擎返回的检索结果并封装转换成系统统一的检索结果格式, 将检索结果发送至查询节点;所述工作节点用于提供检索接口,接收抽象适配器发送的查询请求并进行检索; 以及周期性地向代理节点发送心跳信息。为更好的实现本发明,所述代理节点分成网络层、逻辑层和应用层,其中所述网络层用于实现代理节点与查询节点,以及工作节点之间的通信和数据传 输,接收查询节点和工作节点注册请求信息和心跳信息;所述逻辑层包括节点管理器和后台工作线程池两个部分,所述节点管理器用于进 行工作节点和查询节点的注册工作并管理其生存状态信息,所述后台工作线程池用于周期 性地触发管理任务,删除超时或生存状态为错误(false)的节点;应用层用于在响应查询时从查询代理池中选择一个最适合的查询节点响应当次 查询。优选的,所述节点管理器包括节点注册管理模块和节点状态管理模块;其中所述节点注册管理模块,负责节点的注册管理工作;所述节点状态管理模块,用于管理当前已注册节点的状态,包括接收节点的心跳 信息,更新节点的状态和周期性地检查已注册的各节点的状态,删除超时未收到心跳信息 的无效节点;并在代理节点响应查询请求时,从查询代理池中选择一个当前负载最轻的查 询节点负责响应当前查询请求。优选的,所述查询节点分为网络层、逻辑层及应用层;所述网络层用于与代理节点进行通信,包括接收代理节点发送的工作节点更新状
6态,和主动向代理节点发送心跳状态信息;所述逻辑层包括工作节点管理器和查询节点后台工作线程池两个部分;所述工作 节点管理器负责维护工作节点的生存状态信息,周期性地检查工作节点的状态信息,删除 超时掉线和故障的工作节点,接收代理节点发送的工作节点状态更新;所述查询节点后台 工作线程池用于周期性地向代理节点报告自身的状态信息,及周期性地检查各工作节点状 态并向代理节点报告。本发明的目的之三是通过下述方式实现的,一种分布式搜索引擎系统的实现方 法,包括以下步骤Si、查询节点注册查询节点启动之后读取配置文件,查找代理节点发布RMI的 URI地址,查找代理节点,并请求加入由代理节点控制的分布式搜索引擎系统;进入步骤 S2 ;S2、工作节点的注册单元搜索引擎注册加入分布式搜索引擎系统;进入步骤S3 ;S3、Web服务器将检索短语包装成系统标准的查询格式,形成查询请求,并把查询 请求发送至代理节点,进入步骤S4 ;S4、代理节点选出负责分发及合并查询的查询节点的句柄号,并把选择结果发送 给Web服务器,进入步骤S5 ;S5、Web服务器将查询请求发送至响应该次查询的查询节点,进入步骤S6 ;S6、查询节点将查询请求通过抽象适配器转换后分发给工作节点,等待并接收工 作节点返回的中间结果,进入步骤S7 ;S7、工作节点查询本地索引,并将命中的前N个文档列表结果集合发送至查询节 点,所述N为正整数,由管理员预设;进入步骤S8 ;S8、查询节点在预先配置的时间限度内等待并接收工作节点返回检索结果,忽略 检索超时的节点,经过抽象适配器的封装转换得到各工作节点返回的文档列表,将检索结 果融合排序去重后,保留最终的前N个命中文档,返回给Web服务器,进入步骤S9 ;S9、系统判断是否还有检索任务,若是,则返回至步骤S3,若否,则等待接收到下一 个检索任务后返回至步骤S3。为更好的实现本发明,所述步骤Sl查询节点注册,具体包括以下步骤Si. 1、查询节点读取配置文件,查找代理节点发布RMI的URI地址,生成对代理节 点的引用代理,若查找失败则循环等待直至超时,进入步骤Si. 2 ;Si. 2、查询节点调用代理节点公布的注册接口,向代理节点发送自己公布接口的 URI,进入步骤Si. 3 ;Si. 3、代理节点中的节点注册管理模块根据步骤Si. 2中的URI获取地址并生成 查询节点的引用代理,以其URI为键值保存在代理节点的节点状态管理模块中,进入步骤 Si. 4 ;Si. 4、代理节点返回此次注册操作的结果信息,true表示成功,false表示失败, 查询节点根据代理节点返回的结果信息确定是否已经加入分布式搜索引擎系统,若查询节 点注册失败则等待一段时间再次发送注册请求,即返回步骤Si. 1。优选的,所述步骤S2工作节点的注册,具体包括以下步骤S2. 1、工作节点读取配置文件,查找代理节点发布关于Web服务器服务的WSDL描述文档的地址,解析WSDL文档并生成对代理节点的引用代理,若查找失败则循环等待直至 超时,进入步骤S2. 2 ;S2. 2、工作节点调用代理节点公布的注册接口,发送自己公布接口的URL,进入步 骤 S2. 3 ;S2. 3、代理节点中的节点注册管理模块根据步骤S2. 2中的URL获取工作节点的 WSDL描述文档,并生成工作节点的引用代理,以其URL为键值保存在代理节点的节点状态 管理模块中;进入步骤S2. 4 ;S2. 4、代理节点返回此次注册操作的结果信息,true表示成功,false表示失败, 工作节点根据结果信息确定是否已经加入分布式搜索引擎系统,若工作节点注册失败则等 待一段时间再次发送注册请求,即返回步骤S2. 1。优选的,所述分布式搜索引擎系统的实现方法,还包括节点的状态更新工作节点 和查询节点加入了分布式搜索引擎系统之后需周期性地向代理节点发送心跳信息,报告节 点状态;所述节点的状态更新,具体包括以下步骤G1、工作节点和查询节点封装自身当前的状态信息并把状态信息发送给代理节 点,进入步骤G2;G2、代理节点的节点状态管理模块根据URL更新工作节点的状态信息,如果超过X 个心跳周期没有收到工作节点的信息,则认为该工作节点已经故障并删除其在代理节点的 注册记录;如果超过X个心跳周期没有收到查询节点的信息,则认为该查询节点已经故障 并删除其在代理节点的注册记录;所述X为正整数,所述X值和心跳周期由管理员设置;进 入步骤G3 ;G3、代理节点向工作节点和查询节点返回当次更新操作的状态信息,true表示成 功,false表示失败,如果失败的话,返回步骤Gl。与现有技术相比,本发明具有如下有益效果第一、分布式搜索引擎利用分布式计算,能够同时通过多台计算机或者多个处理 器的计算或存储资源来解决大规模问题,具有高性能和高可靠性;第二、多样化及专业化分布式搜索引擎可以联合众多的有特色的搜索引擎单元 目前互联网的通用搜索引擎如G00gle、Yah00或Baidu等主要解决了新闻、网页等通用信息 的查询,所索引的网页基本上是表层网页,其检索架构仍然是集中式的。而使用本发明的分 布式搜索引擎可以同时具有各集中式搜索引擎的特色及优点,以及检索范围更全面、检索 结果更准确。第三、结构化本发明的分布式搜索引擎采用了分布式搜索引擎系统结构,而分布 式搜索引擎系统具有潜在的有效性和低成本等方面的优势,将分布式处理技术引入到搜索 引擎当中,产生了分布式搜索引擎技术,使其同样的具有有效性和低成本等方面的优点。第四、适用性强合理的体系结构可促使系统能够支持成百上千个节点搜索引擎, 支持目前连通性较差的IPv6网络以及社交网络等的数据采集,显著提高系统的覆盖率。第五、优化的分层结构,支持软件抽象层次的增长;把编程人员从多层模型的复杂 性中分离出来,将数据的存储机制分离出来成为一个新层——抽象层,不但免除了在处理 多个数据源时所面临的诸如接口、协议等的麻烦,也屏蔽了系统底层数据模型结构和位置的变化;在实际的应用中,避免在编程时的相关性,也为应用体系提供了重用和升级上的方 便性和实用性。


图1是本发明基于Web Services和RMI的应用于分布式搜索引擎的分层结构示 意图;图2是基于图1设计的分布式搜索引擎系统体系结构图;图3是代理节点的分层结构模型;图4是查询节点的分层结构模型;图5是抽象适配器结构图;图6是分布式搜索引擎系统检索工作流程示意图。
具体实施例方式下面结合实施例及附图,对本发明作进一步地详细说明,但本发明的实施方式不 限于此。实施例如图1所示,本发明的一种应用于分布式搜索引擎的分层结构,从下往上分别为 物理层、抽象层、应用层和表示层,其中物理层提供了整个结构的数据来源,是构成整个结构的基础,它主要用于接收来 自抽象层的检索请求,完成各个搜索引擎本身的数据检索请求任务,并且将系统的标准心 跳信息通过抽象层封装后发送至应用层(所述心跳信息指物理层定期地通过网络交换的 信息数据包),更新其在应用层的状态信息。物理层是由若干个分布在不同地域或环境中的 同构或异构单元搜索引擎组成的综合的、分布式的一个综合搜索引擎。每个单元搜索引擎 都是一个独立的、自治的搜索节点,而且其分布也可以是动态变化的。所有的单元搜索引擎 协同起来为抽象层提供检索服务。因此,抽象层并不具体地依赖于某一特定的单元搜索引 擎,也不依赖于特定单元搜索引擎的处理能力,它可以根据实际的需求,切合实际地把不同 类型数据部署在不同的单元搜索引擎上,对该类型的数据进行特定的优化。抽象层是一个抽象的全局的数据层,它负责接收来自应用层的检索请求,根据单 元搜索引擎的异构性将查询请求封装为单元搜索引擎可接受的参数,再转发给单元搜索引 擎,这些参数包括(1)查询词,查询词的数据类型可以自定义或采用简单数据类型;(2)起 始文档编号;(3) —次查询获取的文档数等。单元搜索引擎返回检索结果时,抽象层对查询 结果进行处理,获取如下信息网页url、标题(title)、与查询词相关的网格摘要、网页发 布时间、文档在索引中的ID信息、文档得分、网页内容的指纹值(所述网页内容的指纹值具 体计算方法首先将页面内容进行分词,统计每个词的词频,按照词频大小排序,对前面N 个词计算其MD5值作为这个页面的指纹)等。抽象层再将获取的信息递交给应用层进行页 面结果输出处理。另外,抽象层还负责物理层与应用层之间消息通信的格式转换,给相关数 据的操作提供方便,屏蔽了数据的访问细节,给应用提供一致的数据源和方便统一的访问 接口。通过定义一个抽象层,用户不需要知道访问每个单元搜索引擎的语法。另外,如果其 中一个单元搜索引擎被替换或物理上重构,应用层的应用可不用修改。如果正确地设计了这一层,就可以做到从复杂的异构数据中分离出应用程序。应用层是整个架构的核心层,所有的应用均在这一层完成。应用层主要用于提供 数据应用的用户接口。该层接收用户的请求并且将有关的数据请求转发至抽象层,同时对 抽象层返回的结果进行结果融合和优化排序后再提交给表示层。所述应用层由应用服务器 和Web服务器组成,其中应用服务器(Application Server)主要负责用户查询信息的转发 和查询结果的融合,同时还负责管理各个单元搜索引擎的生存状态。而Web服务器主要负 责运行分布式搜索引擎的前端页面,对搜索结果进行聚类分析等工作。表示层是用户的系统入口,一般是Web浏览器,为用户提供友好的检索入口和结 果显示页面。上述分层结构,在分层系统的等级组织形式中,每一层都给上一层提供服务,对其 下层则要求得到服务。使用这种组织方式,容易得到很多良好的特性能够支持软件抽象层 次的增长;能够有效地支持软件的升级和重用,而且能够支持层面级别上的大粒度上的软 件重用。分布式的环境中,数据的存储方式和存储的位置各不相同,要很好地处理全局的有 关问题,把编程人员从多层模型的复杂性中分离出来,可以将数据的存储机制分离出来成 为一个新层——抽象层。抽象层的分离,不但免除了在处理多个数据源时所面临的诸如接 口、协议等的麻烦,也屏蔽了系统底层数据模型结构和位置的变化。在实际的应用中,还需 要提供资源整合的服务,如果把一些有关资源整合的问题提出来构成一层,不但能避免在 编程时的相关性,也为构造一个应用体系提供了重用和升级上的方便性和实用性。基于上述一种应用于分布式信息检索的分层结构,本发明还提供了一种分布式搜 索引擎系统,设计基于Web Services和RMI的分层体系架构,如图2所示,分布式搜索引擎 系统包括Web服务器、代理节点、查询代理池(由多个查询节点组成)、抽象适配器和多个工 作节点,根据图1的各分层结构,形成一套完整的分布式检索机制。下面分别对上述四部分 作进一步地详细说明。Web服务器是一个Web容器,Web服务器除了运行系统的前端页面,还进行搜索结 果的聚类工作,即把搜索结果组织成一些专题分类。代理节点和查询节点对应于应用层中的应用服务器,是分布式搜索引擎系统的核 心部分。代理节点是分布式搜索引擎系统最顶层的调度节点,负责管理整个系统,并实现 以下的功能1、接收Web服务器输出的查询请求;2、接受查询节点和工作节点的注册请求,管理和维护其状态信息;状态信息主要 由三个字段组成存活状态(state),处理器的利用率(cpu used)和内存的使用率(memory used);3、周期性的向查询节点转发各工作节点的状态信息;4、进行查询任务分配,根据各查询节点的状态(处理器和内存状态)选择一个查 询节点响应当前查询请求,并将选择结果发送给Web服务器,再由Web服务器发送查询请求 给相应的查询节点。其中代理节点主要负责接受来自Web服务器的查询请求,根据各查询节点的状态 进行查询任务分配,并将选择结果发送给Web服务器;代理节点是分布式搜索引擎系统的总节点,接受查询节点和工作节点的注册请求,并管理其生存状态。代理节点分层结构模型如图3所示,分成网络层、逻辑层和应用层,其中网络层负 责代理节点与查询节点,以及工作节点之间的通信和数据传输;网络层的主要功能是与代 理节点和工作节点交互通信,包括接收查询节点和工作节点注册请求信息和心跳信息等, 与查询节点的通信是基于RMI设计的,而与工作节点的网络层交互接口是以Web Services 描述的,基于SOAP协议(SimpleObject Access Protocol,简单对象访问协议)发送和接收 消息。有四个主要接口 用于接收查询节点的注册接口和更新接口,以及用于接收工作节点 的注册接口和更新接口。逻辑层主要负责代理节点内部逻辑功能的设计和实现,主要包括节点管理器和 后台工作线程池两个部分。此部分是代理节点内部管理功能的实现,所以不需要基于Web Services描述功能接口。节点管理器主要负责工作节点和查询节点的注册工作并管理其生 存状态信息,包括节点注册管理模块和节点状态管理模块。所述节点注册管理模块,负责节 点的注册管理工作;节点状态管理模块,主要管理当前已注册节点的状态,包括接收节点的 心跳信息,更新该节点的状态和周期性地检查已注册的各节点的状态,删除超时未收到心 跳信息的无效节点。节点状态管理模块还负责一个重要任务就是负责节点筛选功能。节点 筛选功能是指代理节点在响应查询请求时,节点管理器负责从查询代理池中选择一个当前 负载最轻的查询节点负责响应当前查询请求。后台工作线程池主要负责周期性地触发一些 轻量级的管理任务,如检查各节点服务器的生存状态,将超时或生存状态为错误的节点从 节点管理器中删除。由一个后台调度线程将一个预定义的需周期性触发的任务列表中的任 务添加到待处理的任务队列,线程池的线程按照先进先出(FIFO)的顺序执行在待处理队 列中的任务。由于代理节点是分布式搜索引擎系统总的调度节点,负责管理整个系统的状态信 息,所以时间和空间复杂度较高的操作都不宜在代理节点内完成,以免出现瓶颈问题,而且 如果代理因为负载过大而出现故障,整个分布式搜索引擎系统也会瘫痪,所以代理提供的 应用接口功能也比较单一,只向Web服务器提供查询节点选择服务。当接受到Web服务器 的查询分配请求时,代理节点根据查询词调用节点状态管理模块的查询节点选择操作,获 取一个存活的查询节点远程引用并返回给Web服务器。可以通过增加代理节点的备份节点 以加强系统的健壮性。代理节点的三层架构的设计提高了系统的可扩展性、容错性和吞吐 量。多个查询节点组成查询代理池,多个查询节点并发响应用户查询,通过使用多个 查询节点,解决同时响应大量请求时所产生的瓶颈问题。查询节点作为分布式搜索引擎系 统的中心节点,实现以下的功能1、与代理节点进行交互一方面接收代理节点转发的工作节点状态更新信息并进 行维护;另一方面周期性地向代理节点发送状态信息;2、查询任务的分发接收Web服务器的查询请求,并将查询请求按一定策略选择 分发到各个工作节点,具体的策略包括基础的轮回(Round Robin)策略以及可定义的高级
策略等。3、查询结果的去重合并对工作节点返回的命中文档列表进行消重、合并的处理 操作,将处理后的结果发送给Web服务器,通过Web服务器展示给用户,以完成一次检索任
11务。查询节点的分层结构模型如图4所示,也分为网络层、逻辑层及应用层。网络 层的主要功能是与代理节点的交互通信,包括接收代理节点发送的工作节点更新状态, 和主动向代理节点发送心跳状态信息;网络层交互接口是RMI设计的。只有一个主要接 口 工作节点的状态更新接口。查询节点从代理节点接收到工作节点的更新信息以后,首 先在节点管理器中查找,判断是否存在该工作节点的注册信息,若存在,则直接更新该工 作的生存状态信息;若不存在,则根据URL获取并解析该工作节点的WSDL(Web Services DescriptionLanguage)描述文档,生成工作节点的注册信息并在节点管理器记录。逻辑层主要负责查询节点内部逻辑功能的设计和实现;主要包括工作节点管理器 和查询节点后台工作线程池两个部分。工作节点管理器负责维护工作节点的生存状态信 息,周期检查工作节点的状态信息,删除超时掉线和故障的工作节点,接收代理节点发送的 工作节点状态更新。查询节点后台工作线程池主要负责周期性地向代理节点报告自身的状 态信息,及周期性地检查各工作节点状态并向代理节点报告。由于查询节点主要负责查询请求的分发和查询结果的合并工作,协调各个工作节 点进行分布式的检索工作,是分布式搜索引擎系统中最重要的一环,所以其负载也比较大, 对其稳定性的要求也比较高,所以采取由多个查询节点组成的查询代理池来解决稳定性和 瓶颈问题,查询节点三层架构的设计提高了系统的可扩展性、容错性和吞吐量。抽象适配器(Abstract Adapter),对应于图1的抽象层,负责接口的转换整合异 构资源,如图5所示,抽象适配器的主要工作是1、根据特定的单元搜索引擎封装转换来自上层的查询请求;具体为抽象适配器接 收上层的查询请求,并进行封装转换,使该查询请求信息能够满足单元搜索引擎接口读取 信息的要求,抽象适配器将封装转换后的查询请求发送给相应的单元搜索引擎;2、对单元搜索引擎返回的检索结果进行转换,封装成系统统一的检索结果格式, 并将检索结果发送至查询节点。对于每个工作节点都必须根据其提供的接口编写相应的抽象适配器,相当于在计 算机系统中,为每个硬件设备编写驱动程序,供系统调用。通过抽象适配器层将物理层返 回的检索结果进行转换和封装,建立一个强壮的、可塑性强的、给上层提供良好服务的抽象 层,以便更好的给上层提供服务。另外还实现了上层与物理层的松耦合性,使应用层和物理 层自身不需修改就可以形成一个统一的系统。工作节点是单元搜索引擎,在硬件层面和软件环境上可以是异构的,对应于图1 的物理层,负责本地索引数据的查询。工作节点主要实现如下功能1、提供检索接口,接受用户的查询请求;2、周期性地代理节点发送心跳信息。每个单元搜索引擎对应一个抽象适配器,通过抽象适配器接受应用层的查询请求 并提交本地的检索结果。每个单元搜索引擎基于Web Services通信协议提供检索接口,各 单元搜索引擎加入分布式搜索引擎系统时并不需要对已有提供的应用程序接口进行修改, 通过特定的抽象适配器进行接口的转换,各个单元搜索引擎跟系统是松耦合的,单元搜索 引擎的变化只需修改相应的抽象适配器即可统一接口。系统的Web服务器、代理节点和查询节点是分布式搜索引擎系统的核心节点,它们之间的通信是基于RMI通信协议的,而分布式搜索引擎系统中心与工作节点的通信接口 是基于Web Services描述的,数据流格式都以通用的平台无关性XML描述以解决异构资源 的整合问题。上述一种分布式搜索引擎系统的工作流程具体包括以下步骤Si、查询节点注册查询节点启动之后读取配置文件,查找代理节点发布RMI的 URI地址,查找代理节点,并请求加入由代理节点控制的分布式搜索引擎系统;进入步骤 S2 ;S2、工作节点的注册单元搜索引擎注册加入分布式搜索引擎系统;进入步骤S3 ;S3、Web服务器将检索短语包装成系统标准的查询格式,形成查询请求,并把查询 请求发送至代理节点,进入步骤S4 ;S4、代理节点按照轮回或配置的高级策略选出负责分发及合并查询的查询节点的 句柄号(Handle),并把选择结果发送给Web服务器,进入步骤S5 ;S5、Web服务器将查询请求发送至响应该次查询的查询节点,进入步骤S6 ;S6、查询节点将查询请求通过抽象适配器转换后分发给工作节点,等待并接收工 作节点返回中间结果,进入步骤S7 ;S7、工作节点查询本地索引,并将命中的前N个(Top N)文档列表结果集合发送至 查询节点,所述N为正整数,由管理员预设;进入步骤S8 ;S8、查询节点在预先配置的时间限度内等待并接收工作节点返回检索结果,忽略 检索超时的节点,经过抽象适配器的封装转换得到各工作节点返回的文档列表后,按照一 定的结果融合算法(如线性融合、CORI算法等)进行检索结果的融合排序去重后,保留最 终的前N个命中文档,返回给Web服务器,进入步骤S9 ;S9、系统判断是否还有检索任务,若是,则返回至步骤S3,若否,则等待接收到下一 个检索任务后返回至步骤S3。系统允许多个检索任务的并发执行。所述检索超时,是指查询节点在等待各工作节点返回检索结果的最大等待时间, 忽略超时的单元搜索引擎返回的检索结果。为更好地实现本发明,所述步骤Sl查询节点注册,具体包括以下步骤Si. 1、查询节点读取配置文件,查找代理节点发布RMI的URI地址,生成对代理节 点的引用代理,若查找失败则循环等待直至超时,进入步骤Si. 2 ;Si. 2、查询节点调用代理节点公布的注册接口,向代理节点发送自己公布接口的 URI,进入步骤Si. 3 ;Si. 3、代理节点中的节点注册管理模块根据步骤Si. 2中的URI获取地址并生成 查询节点的引用代理,以其URI为键值保存在代理节点的节点状态管理模块中,进入步骤 Si. 4 ;Si. 4、代理节点返回此次注册操作的结果信息,true表示成功,false表示失败, 查询节点根据代理节点返回的结果信息确定是否已经加入分布式搜索引擎系统,若查询节 点注册失败则等待一段时间再次发送注册请求,即返回步骤Si. 1。 所述步骤S2工作节点的注册,具体包括以下步骤 S2. 1、工作节点读取配置文件,查找代理节点发布关于Web服务器服务的WSDL描 述文档的地址,解析WSDL文档并生成对代理节点的引用代理,若查找失败则循环等待直至 超时,进入步骤S2. 2 ;
S2. 2、工作节点调用代理节点公布的注册接口,发送自己公布接口的URL,进入步 骤 S2. 3 ;S2. 3、代理节点中的节点注册管理模块根据步骤S2. 2中的URL获取工作节点的 WSDL描述文档,并生成工作节点的引用代理,以其URL为键值保存在代理节点的节点状态 管理模块中;进入步骤S2. 4 ;S2. 4、代理节点返回此次注册操作的结果信息,true表示成功,false表示失败, 工作节点根据结果信息确定是否已经加入分布式搜索引擎系统,若工作节点注册失败则等 待一段时间再次发送注册请求,即返回步骤S2. 1。所述一种分布式搜索引擎系统的实现方法,还包括节点的状态更新工作节点和 查询节点加入了分布式搜索引擎系统之后需周期性地向代理节点发送心跳信息,报告节点 状态;用户查询的处理和节点的状态更新可以是并发执行的。所述工作节点的状态更新,具体包括以下步骤F1、工作节点封装自身当前的状态信息并把状态信息发送给代理节点,进入步骤 F2 ;F2、代理节点的节点状态管理模块根据URL更新工作节点的状态信息,如果超过X 个心跳周期没有收到工作节点的信息,则认为该工作节点已经故障并删除其在代理节点的 注册记录,所述X为正整数,X在本实施例中为4 ;进入步骤F3 ;F3、代理节点向工作节点返回当次更新操作的状态信息,true表示成功,false表 示失败,如果失败的话,返回步骤Fl。所述查询节点的状态更新,是指当查询节点加入了分布式搜索引擎系统之后必需 周期(本实施例设定10秒为一周期)性地向代理节点发送心跳信息,报告节点状态。具体 更新流程与上述的工作节点的状态更新流程相同Bi、查询节点封装自身当前的状态信息并把状态信息发送给代理节点,进入步骤 B2 ;B2、代理节点的节点状态管理模块根据URL更新查询节点的状态信息,如果超过X 个心跳周期没有收到查询节点的信息,则认为该查询节点已经故障并删除其在代理节点的 注册记录,所述X为正整数,X在本实施例中为4 ;进入步骤B3 ;B3、代理节点向查询节点返回当次更新操作的状态信息,true表示成功,false表 示失败,如果失败的话,返回步骤Bl。所述各工作节点和查询节点向代理节点发送心跳信息的时间间隔为10秒。所述 代理节点认为单元搜索引擎工作节点和查询节点超时掉线的时间设定为四个心跳周期,即 40秒。心跳发送周期和超时时间由管理员设定。上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受所述实施例的 限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化, 均应为等效的置换方式,都包含在本发明的保护范围之内。
权利要求
一种应用于分布式搜索引擎的分层结构,其特征在于,包括物理层、抽象层、应用层和表示层,其中所述物理层是由若干个单元搜索引擎组成,用于接收来自抽象层的检索请求,完成各个搜索引擎本身的数据检索请求任务,并且通过抽象层发送标准的心跳信息至应用层,更新其在应用层的状态信息;所述抽象层用于实现物理层与应用层之间消息通信的格式转换;以及用于接收来自应用层的检索请求,根据单元搜索引擎的异构性将查询请求进行封装,将封装后的查询请求转发给单元搜索引擎,接收单元搜索引擎返回的检索结果,并发送给应用层;所述应用层用于提供数据应用的用户接口,接收用户的查询请求并将查询请求转发至抽象层,同时对抽象层返回的检索结果进行处理后再提交给表示层;所述表示层用于为用户提供友好的检索入口和结果显示页面。
2.根据权利要求1所述一种应用于分布式搜索引擎的分层结构,其特征在于,所述应 用层包括应用服务器和Web服务器,其中所述应用服务器用于实现用户查询信息的转发和查询结果的融合,同时还负责管理各 个单元搜索引擎的生存状态;所述Web服务器用于负责运行前端页面,对搜索结果进行聚类分析的工作。
3.一种分布式搜索引擎系统,其特征在于,包括Web服务器、代理节点、查询代理池、抽 象适配器和多个工作节点,所述查询代理池由多个查询节点组成;其中所述Web服务器用于运行分布式搜索引擎系统的前端页面,并对搜索结果进行聚类分 析的工作;所述代理节点用于接受来自Web服务器的查询请求,根据各查询节点的状态进行查询 任务分配,并将选择结果发送给Web服务器;代理节点还用于接受查询节点和工作节点的 注册请求,并管理其生存状态;所述查询节点用于与代理节点进行交互,接收代理节点转发的工作节点状态更新信息 并进行维护,周期性地向代理节点发送状态信息;接收Web服务器的查询请求,并将查询请 求分发到各个工作节点;收到工作节点返回的命中文档列表并进行消重、合并的处理操作, 将处理后的检索结果发送给Web服务器;所述抽象适配器用于接收上层的查询请求,并根据单元搜索引擎接口读取信息的要求 对查询请求信息进行封装转换,抽象适配器将封装转换后的查询请求发送给相应的单元搜 索引擎;接收单元搜索引擎返回的检索结果并封装转换成系统统一的检索结果格式,将检 索结果发送至查询节点;所述工作节点用于提供检索接口,接收抽象适配器发送的查询请求并进行检索;以及 周期性地向代理节点发送心跳信息。
4.根据权利要求3所述一种分布式搜索引擎系统,其特征在于,所述代理节点分成网 络层、逻辑层和应用层,其中所述网络层用于实现代理节点与查询节点,以及工作节点之间的通信和数据传输,接 收查询节点和工作节点注册请求信息和心跳信息;所述逻辑层包括节点管理器和后台工作线程池两个部分,所述节点管理器用于进行工 作节点和查询节点的注册工作并管理其生存状态信息,所述后台工作线程池用于周期性地2触发管理任务,删除超时或生存状态为错误的节点;应用层用于在响应查询时从查询代理池中选择一个最适合的查询节点响应当次查询。
5.根据权利要求4所述一种分布式搜索引擎系统,其特征在于,所述节点管理器包括 节点注册管理模块和节点状态管理模块;其中所述节点注册管理模块,负责节点的注册管理工作;所述节点状态管理模块,用于管理当前已注册节点的状态,包括接收节点的心跳信息, 更新节点的状态和周期性地检查已注册的各节点的状态,删除超时未收到心跳信息的无效 节点;并在代理节点响应查询请求时,从查询代理池中选择一个当前负载最轻的查询节点 负责响应当前查询请求。
6.根据权利要求3所述一种分布式搜索引擎系统,其特征在于,所述查询节点分为网 络层、逻辑层及应用层;所述网络层用于与代理节点进行通信,包括接收代理节点发送的工作节点更新状态, 和主动向代理节点发送心跳状态信息;所述逻辑层包括工作节点管理器和查询节点后台工作线程池两个部分;所述工作节点 管理器负责维护工作节点的生存状态信息,周期性地检查工作节点的状态信息,删除超时 掉线和故障的工作节点,接收代理节点发送的工作节点状态更新;所述查询节点后台工作 线程池用于周期性地向代理节点报告自身的状态信息,及周期性地检查各工作节点状态并 向代理节点报告。
7.一种分布式搜索引擎系统的实现方法,其特征在于,包括以下步骤51、查询节点注册查询节点启动之后读取配置文件,查找代理节点发布RMI的URI地 址,查找代理节点,并请求加入由代理节点控制的分布式搜索引擎系统;进入步骤S2 ;52、工作节点的注册单元搜索引擎注册加入分布式搜索引擎系统;进入步骤S3;53、Web服务器将检索短语包装成系统标准的查询格式,形成查询请求,并把查询请求 发送至代理节点,进入步骤S4 ;54、代理节点选出负责分发及合并查询的查询节点的句柄号,并把选择结果发送给Web 服务器,进入步骤S5 ;55、Web服务器将查询请求发送至响应该次查询的查询节点,进入步骤S6;56、查询节点将查询请求通过抽象适配器转换后分发给工作节点,等待并接收工作节 点返回的中间结果,进入步骤S7 ;57、工作节点查询本地索引,并将命中的前N个文档列表结果集合发送至查询节点,所 述N为正整数,由管理员预设;进入步骤S8 ;58、查询节点在预先配置的时间限度内等待并接收工作节点返回检索结果,忽略检索 超时的节点,经过抽象适配器的封装转换得到各工作节点返回的文档列表,将检索结果融 合排序去重后,保留最终的前N个命中文档,返回给Web服务器,进入步骤S9 ;59、系统判断是否还有检索任务,若是,则返回至步骤S3,若否,则等待接收到下一个检 索任务后返回至步骤S3。
8.根据权利要求7所述一种分布式搜索引擎系统的实现方法,其特征在于,所述步骤 Sl查询节点注册,具体包括以下步骤Si. 1、查询节点读取配置文件,查找代理节点发布RMI的URI地址,生成对代理节点的3引用代理,若查找失败则循环等待直至超时,进入步骤Si. 2 ;`Si. 2、查询节点调用代理节点公布的注册接口,向代理节点发送自己公布接口的URI, 进入步骤Si. 3 ;`Si. 3、代理节点中的节点注册管理模块根据步骤Si. 2中的URI获取地址并生成查询节 点的引用代理,以其URI为键值保存在代理节点的节点状态管理模块中,进入步骤Si. 4 ;`51.4、代理节点返回此次注册操作的结果信息,true表示成功,false表示失败,查询 节点根据代理节点返回的结果信息确定是否已经加入分布式搜索引擎系统,若查询节点注 册失败则等待一段时间再次发送注册请求,即返回步骤Si. 1。
9.根据权利要求7所述一种分布式搜索引擎系统的实现方法,其特征在于,所述步骤 S2工作节点的注册,具体包括以下步骤`52.1、工作节点读取配置文件,查找代理节点发布关于Web服务器服务的WSDL描述 文档的地址,解析WSDL文档并生成对代理节点的引用代理,若查找失败则循环等待直至超 时,进入步骤S2.2 ;`S2. 2、工作节点调用代理节点公布的注册接口,发送自己公布接口的URL,进入步骤 S2. 3 ;`S2. 3、代理节点中的节点注册管理模块根据步骤S2. 2中的URL获取工作节点的WSDL 描述文档,并生成工作节点的引用代理,以其URL为键值保存在代理节点的节点状态管理 模块中;进入步骤S2. 4 ;`S2. 4、代理节点返回此次注册操作的结果信息,true表示成功,false表示失败,工作 节点根据结果信息确定是否已经加入分布式搜索引擎系统,若工作节点注册失败则等待一 段时间再次发送注册请求,即返回步骤S2. 1。
10.根据权利要求7所述一种分布式搜索引擎系统的实现方法,其特征在于,还包括节 点的状态更新工作节点和查询节点加入了分布式搜索引擎系统之后需周期性地向代理节 点发送心跳信息,报告节点状态;所述节点的状态更新,具体包括以下步骤`G1、工作节点和查询节点封装自身当前的状态信息并把状态信息发送给代理节点,进 入步骤G2 ;G2、代理节点的节点状态管理模块根据URL更新工作节点的状态信息,如果超过X个心 跳周期没有收到工作节点的信息,则认为该工作节点已经故障并删除其在代理节点的注册 记录;如果超过X个心跳周期没有收到查询节点的信息,则认为该查询节点已经故障并删 除其在代理节点的注册记录;所述X为正整数,所述X值和心跳周期由管理员设置;进入步 骤G3 ;G3、代理节点向工作节点和查询节点返回当次更新操作的状态信息,true表示成功, false表示失败,如果失败的话,返回步骤Gl。
全文摘要
本发明公开了一种应用于分布式搜索引擎的分层结构,包括物理层、抽象层、应用层和表示层;本发明还公开了一种分布式搜索引擎系统,包括Web服务器、代理节点、查询代理池、抽象适配器和多个工作节点,所述查询代理池由多个查询节点组成;本发明还公开了上述一种分布式搜索引擎系统的实现方法,包括以下步骤S1、查询节点注册;S2、工作节点的注册;S3、节点的状态更新;S4、查询请求的分发与检索。本发明具有性能好、可靠性高、多样化、专业化以及适用性强等优点。
文档编号G06F17/30GK101950300SQ201010290008
公开日2011年1月19日 申请日期2010年9月20日 优先权日2010年9月20日
发明者张凌, 李嘉林, 李 浩, 李粤, 董守斌, 袁华 申请人:华南理工大学;广州数园网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1