CN101950300B - 一种分布式搜索引擎系统及其实现方法 - Google Patents
一种分布式搜索引擎系统及其实现方法 Download PDFInfo
- Publication number
- CN101950300B CN101950300B CN 201010290008 CN201010290008A CN101950300B CN 101950300 B CN101950300 B CN 101950300B CN 201010290008 CN201010290008 CN 201010290008 CN 201010290008 A CN201010290008 A CN 201010290008A CN 101950300 B CN101950300 B CN 101950300B
- Authority
- CN
- China
- Prior art keywords
- node
- query
- agent
- working
- search engine
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式搜索引擎系统,包括Web服务器、代理节点、查询代理池、抽象适配器和多个工作节点,所述查询代理池由多个查询节点组成;本发明还公开了上述一种分布式搜索引擎系统的实现方法,包括以下步骤:S1、查询节点注册;S2、工作节点的注册;S3、节点的状态更新;S4、查询请求的分发与检索。本发明具有性能好、可靠性高、多样化、专业化以及适用性强等优点。
Description
技术领域
本发明涉及分布式搜索引擎系统的设计和实现,具体是指基于WebServices和RMI(Remote Method Invocation,远程方法调用)的技术联合部署在多个集群上的多个单元搜索引擎,提供统一的检索服务的分布式搜索引擎服务。
背景技术
随着下一代网络的快速发展,Web2.0等新一代信息技术的成熟,信息资源呈现分布化,这为搜索引擎的体系结构设计提出了更多新的挑战。一方面,地理位置分散的异构数字化信息中包含了大量宝贵的资源,用户迫切地需要从这些信息中找到所需信息;另一方面,虽然单个集中式搜索引擎的处理能力不断提高,但是在如此大规模的条件下,要对这样海量的信息进行检索,集中式搜索引擎的处理能力毕竟有限,特别需要多个搜索引擎进行协助工作。而随着互联网信息的爆炸性增长,传统搜索引擎开始显示出一些局限性:
(一)搜索深度不够:传统搜索引擎只能搜索到Internet上互相链接的表层资源,而深层资源,比如需要权限才能访问的页面,组织内部的页面和一些网络信息孤岛资源等都无法索引。
(二)时效性较差:如果服务器更新周期过长,容易产生大量的无效链接。事实上,采用网络蜘蛛爬行网络的技术是无法避免无效链接的。只能通过缩短更新周期来尽量减少无效链接。
(三)成本较高:海量的资源索引信息需要庞大的服务器来维护。每一条检索请求都将发送给服务器来处理,因此要求服务器有强大的处理能力、存储能力以及网络带宽。
发明内容
本发明的目的之一在于克服上述缺点和不足,提供一种应用于分布式搜索引擎的分层装置。该装置具有性能好、可靠性高、多样化、专业化以及适用性强等优点。
本发明的目的之二在于提供一种分布式搜索引擎系统。
本发明的目的之三在于提供上述一种分布式搜索引擎系统的实现方法。
本发明的目的之一是通过下述方式实现的,一种应用于分布式搜索引擎的分层装置,包括物理层、抽象层、应用层和表示层,其中
所述物理层是由若干个单元搜索引擎组成,用于接收来自抽象层的检索请求,完成各个搜索引擎本身的数据检索请求任务,并且通过抽象层发送标准的心跳信息至应用层,更新其在应用层的状态信息;
所述抽象层用于实现物理层与应用层之间消息通信的格式转换;以及用于接收来自应用层的检索请求,根据单元搜索引擎的异构性将查询请求进行封装,将封装后的查询请求转发给单元搜索引擎,接收单元搜索引擎返回的检索结果,并发送给应用层;
所述应用层用于提供数据应用的用户接口,接收用户的查询请求并将查询请求转发至抽象层,同时对抽象层返回的检索结果进行输出格式化处理后再提交给表示层;
所述表示层用于为用户提供友好的检索入口和结果显示页面。
为更好的实现本发明,所述应用层包括应用服务器和Web服务器,其中
所述应用服务器用于实现用户查询信息的转发和查询结果的融合,同时还负责管理各个单元搜索引擎的生存状态;
所述Web服务器用于负责运行前端页面,对搜索结果进行聚类分析的工作。
本发明的目的之二是通过下述方式实现的,一种分布式搜索引擎系统,包括Web服务器、代理节点、查询代理池、抽象适配器和多个工作节点,所述查询代理池由多个查询节点组成;其中
所述Web服务器用于运行分布式搜索引擎系统的前端页面,并对搜索结果进行聚类分析的工作;
所述代理节点用于接受来自Web服务器的查询请求,根据各查询节点的状态进行查询任务分配,并将选择结果发送给Web服务器;代理节点还用于接受查询节点和工作节点的注册请求,并管理其生存状态;
所述查询节点用于与代理节点进行交互,接收代理节点转发的工作节点状态更新信息并进行维护,周期性地向代理节点发送状态信息;接收Web服务器的查询请求,并通过抽象适配器将查询请求分发到各个工作节点;收到工作节点返回的命中文档列表并进行消重、合并的处理操作,将处理后的检索结果发送给Web服务器;
所述抽象适配器用于接收上层的查询请求,并根据工作节点接口读取信息的要求对查询请求信息进行封装转换,抽象适配器将封装转换后的查询请求发送给相应的工作节点;接收工作节点返回的检索结果并封装转换成系统统一的检索结果格式,将检索结果发送至查询节点;
所述工作节点用于提供检索接口,接收抽象适配器发送的查询请求并进行检索;以及周期性地向代理节点发送心跳信息。
为更好的实现本发明,所述代理节点分成网络层、逻辑层和应用层,其中
所述网络层用于实现代理节点与查询节点,以及工作节点之间的通信和数据传输,接收查询节点和工作节点注册请求信息和心跳信息;
所述逻辑层包括节点管理器和后台工作线程池两个部分,所述节点管理器用于进行工作节点和查询节点的注册工作并管理其生存状态信息,所述后台工作线程池用于周期性地触发管理任务,删除超时或生存状态为错误(false)的节点;
应用层用于在响应查询时从查询代理池中选择一个最适合的查询节点响应当次查询。
优选的,所述节点管理器包括节点注册管理模块和节点状态管理模块;其中
所述节点注册管理模块,负责节点的注册管理工作;
所述节点状态管理模块,用于管理当前已注册节点的状态,包括接收节点的心跳信息,更新节点的状态和周期性地检查已注册的各节点的状态,删除超时未收到心跳信息的无效节点;并在代理节点响应查询请求时,从查询代理池中选择一个当前负载最轻的查询节点负责响应当前查询请求。
优选的,所述查询节点分为网络层、逻辑层及应用层;
所述网络层用于与代理节点进行通信,包括接收代理节点发送的工作节点更新状态,和主动向代理节点发送心跳状态信息;
所述逻辑层包括工作节点管理器和查询节点后台工作线程池两个部分;所述工作节点管理器负责维护工作节点的生存状态信息,周期性地检查工作节点的状态信息,删除超时掉线和故障的工作节点,接收代理节点发送的工作节点状态更新;所述查询节点后台工作线程池用于周期性地向代理节点报告自身的状态信息,及周期性地检查各工作节点状态并向代理节点报告。
本发明的目的之三是通过下述方式实现的,一种分布式搜索引擎系统的实现方法,包括以下步骤:
S1、查询节点注册:查询节点启动之后读取配置文件,查找代理节点发布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。
为更好的实现本发明,所述步骤S1查询节点注册,具体包括以下步骤:
S1.1、查询节点读取配置文件,查找代理节点发布RMI的URI地址,生成对代理节点的引用代理,若查找失败则循环等待直至超时,进入步骤S1.2;
S1.2、查询节点调用代理节点公布的注册接口,向代理节点发送自己公布接口的URI,进入步骤S1.3;
S1.3、代理节点中的节点注册管理模块根据步骤S1.2中的URI获取地址并生成查询节点的引用代理,以其URI为键值保存在代理节点的节点状态管理模块中,进入步骤S1.4;
S1.4、代理节点返回此次注册操作的结果信息,true表示成功,false表示失败,查询节点根据代理节点返回的结果信息确定是否已经加入分布式搜索引擎系统,若查询节点注册失败则等待一段时间再次发送注册请求,即返回步骤S1.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表示失败,如果失败的话,返回步骤G1。
与现有技术相比,本发明具有如下有益效果:
第一、分布式搜索引擎利用分布式计算,能够同时通过多台计算机或者多个处理器的计算或存储资源来解决大规模问题,具有高性能和高可靠性;
第二、多样化及专业化:分布式搜索引擎可以联合众多的有特色的搜索引擎单元:目前互联网的通用搜索引擎如Google、Yahoo或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服务器展示给用户,以完成一次检索任务。
查询节点的分层结构模型如图4所示,也分为网络层、逻辑层及应用层。网络层的主要功能是与代理节点的交互通信,包括接收代理节点发送的工作节点更新状态,和主动向代理节点发送心跳状态信息;网络层交互接口是RMI设计的。只有一个主要接口:工作节点的状态更新接口。查询节点从代理节点接收到工作节点的更新信息以后,首先在节点管理器中查找,判断是否存在该工作节点的注册信息,若存在,则直接更新该工作的生存状态信息;若不存在,则根据URL获取并解析该工作节点的WSDL(Web Services DescriptionLanguage)描述文档,生成工作节点的注册信息并在节点管理器记录。
逻辑层主要负责查询节点内部逻辑功能的设计和实现;主要包括工作节点管理器和查询节点后台工作线程池两个部分。工作节点管理器负责维护工作节点的生存状态信息,周期检查工作节点的状态信息,删除超时掉线和故障的工作节点,接收代理节点发送的工作节点状态更新。查询节点后台工作线程池主要负责周期性地向代理节点报告自身的状态信息,及周期性地检查各工作节点状态并向代理节点报告。
由于查询节点主要负责查询请求的分发和查询结果的合并工作,协调各个工作节点进行分布式的检索工作,是分布式搜索引擎系统中最重要的一环,所以其负载也比较大,对其稳定性的要求也比较高,所以采取由多个查询节点组成的查询代理池来解决稳定性和瓶颈问题,查询节点三层架构的设计提高了系统的可扩展性、容错性和吞吐量。
抽象适配器(Abstract Adapter),对应于图1的抽象层,负责接口的转换整合异构资源,如图5所示,抽象适配器的主要工作是:
1、根据特定的单元搜索引擎封装转换来自上层的查询请求;具体为抽象适配器接收上层的查询请求,并进行封装转换,使该查询请求信息能够满足单元搜索引擎接口读取信息的要求,抽象适配器将封装转换后的查询请求发送给相应的单元搜索引擎;
2、对单元搜索引擎返回的检索结果进行转换,封装成系统统一的检索结果格式,并将检索结果发送至查询节点。
对于每个工作节点都必须根据其提供的接口编写相应的抽象适配器,相当于在计算机系统中,为每个硬件设备编写驱动程序,供系统调用。通过抽象适配器层将物理层返回的检索结果进行转换和封装,建立一个强壮的、可塑性强的、给上层提供良好服务的抽象层,以便更好的给上层提供服务。另外还实现了上层与物理层的松耦合性,使应用层和物理层自身不需修改就可以形成一个统一的系统。
工作节点是单元搜索引擎,在硬件层面和软件环境上可以是异构的,对应于图1的物理层,负责本地索引数据的查询。工作节点主要实现如下功能:
1、提供检索接口,接受用户的查询请求;
2、周期性地代理节点发送心跳信息。
每个单元搜索引擎对应一个抽象适配器,通过抽象适配器接受应用层的查询请求并提交本地的检索结果。每个单元搜索引擎基于Web Services通信协议提供检索接口,各单元搜索引擎加入分布式搜索引擎系统时并不需要对已有提供的应用程序接口进行修改,通过特定的抽象适配器进行接口的转换,各个单元搜索引擎跟系统是松耦合的,单元搜索引擎的变化只需修改相应的抽象适配器即可统一接口。
系统的Web服务器、代理节点和查询节点是分布式搜索引擎系统的核心节点,它们之间的通信是基于RMI通信协议的,而分布式搜索引擎系统中心与工作节点的通信接口是基于Web Services描述的,数据流格式都以通用的平台无关性XML描述以解决异构资源的整合问题。上述一种分布式搜索引擎系统的工作流程具体包括以下步骤:
S1、查询节点注册:查询节点启动之后读取配置文件,查找代理节点发布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。系统允许多个检索任务的并发执行。
所述检索超时,是指查询节点在等待各工作节点返回检索结果的最大等待时间,忽略超时的工作节点返回的检索结果。
为更好地实现本发明,所述步骤S1查询节点注册,具体包括以下步骤:
S1.1、查询节点读取配置文件,查找代理节点发布RMI的URI地址,生成对代理节点的引用代理,若查找失败则循环等待直至超时,进入步骤S1.2;
S1.2、查询节点调用代理节点公布的注册接口,向代理节点发送自己公布接口的URI,进入步骤S1.3;
S1.3、代理节点中的节点注册管理模块根据步骤S1.2中的URI获取地址并生成查询节点的引用代理,以其URI为键值保存在代理节点的节点状态管理模块中,进入步骤S1.4;
S1.4、代理节点返回此次注册操作的结果信息,true表示成功,false表示失败,查询节点根据代理节点返回的结果信息确定是否已经加入分布式搜索引擎系统,若查询节点注册失败则等待一段时间再次发送注册请求,即返回步骤S1.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表示失败,如果失败的话,返回步骤F1。
所述查询节点的状态更新,是指当查询节点加入了分布式搜索引擎系统之后必需周期(本实施例设定10秒为一周期)性地向代理节点发送心跳信息,报告节点状态。具体更新流程与上述的工作节点的状态更新流程相同:
B1、查询节点封装自身当前的状态信息并把状态信息发送给代理节点,进入步骤B2;
B2、代理节点的节点状态管理模块根据URL更新查询节点的状态信息,如果超过X个心跳周期没有收到查询节点的信息,则认为该查询节点已经故障并删除其在代理节点的注册记录,所述X为正整数,X在本实施例中为4;进入步骤B3;
B3、代理节点向查询节点返回当次更新操作的状态信息,true表示成功,false表示失败,如果失败的话,返回步骤B1。
所述各工作节点和查询节点向代理节点发送心跳信息的时间间隔为10秒。所述代理节点认为工作节点和查询节点超时掉线的时间设定为四个心跳周期,即40秒。心跳发送周期和超时时间由管理员设定。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受所述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (8)
1.一种分布式搜索引擎系统,其特征在于,包括Web服务器、代理节点、查询代理池、抽象适配器和多个工作节点,所述查询代理池由多个查询节点组成;其中
所述Web服务器用于运行分布式搜索引擎系统的前端页面,并对搜索结果进行聚类分析的工作;
所述代理节点用于接受来自Web服务器的查询请求,根据各查询节点的状态进行查询任务分配,并将选择结果发送给Web服务器;代理节点还用于接受查询节点和工作节点的注册请求,并管理其生存状态;
所述查询节点用于与代理节点进行交互,接收代理节点转发的工作节点状态更新信息并进行维护,周期性地向代理节点发送状态信息;接收Web服务器的查询请求,并通过抽象适配器将查询请求分发到各个工作节点;收到工作节点返回的命中文档列表并进行消重、合并的处理操作,将处理后的检索结果发送给Web服务器;
所述抽象适配器用于接收上层的查询请求,并根据工作节点接口读取信息的要求对查询请求信息进行封装转换,抽象适配器将封装转换后的查询请求发送给相应的工作节点;接收工作节点返回的检索结果并封装转换成系统统一的检索结果格式,将检索结果发送至查询节点;
所述工作节点用于提供检索接口,接收抽象适配器发送的查询请求并进行检索;以及周期性地向代理节点发送心跳信息。
2.根据权利要求1所述一种分布式搜索引擎系统,其特征在于,所述代理节点分成网络层、逻辑层和应用层,其中
所述网络层用于实现代理节点与查询节点,以及工作节点之间的通信和数据传输,接收查询节点和工作节点注册请求信息和心跳信息;
所述逻辑层包括节点管理器和后台工作线程池两个部分,所述节点管理器用于进行工作节点和查询节点的注册工作并管理其生存状态信息,所述后台工作线程池用于周期性地触发管理任务,删除超时或生存状态为错误的节点;
应用层用于在响应查询时从查询代理池中选择一个最适合的查询节点响应当次查询。
3.根据权利要求2所述一种分布式搜索引擎系统,其特征在于,所述节点管理器包括节点注册管理模块和节点状态管理模块;其中
所述节点注册管理模块,负责节点的注册管理工作;
所述节点状态管理模块,用于管理当前已注册节点的状态,包括接收节点的心跳信息,更新节点的状态和周期性地检查已注册的各节点的状态,删除超时未收到心跳信息的无效节点;并在代理节点响应查询请求时,从查询代理池中选择一个当前负载最轻的查询节点负责响应当前查询请求。
4.根据权利要求1所述一种分布式搜索引擎系统,其特征在于,所述查询节点分为网络层、逻辑层及应用层;
所述网络层用于与代理节点进行通信,包括接收代理节点发送的工作节点更新状态,和主动向代理节点发送心跳状态信息;
所述逻辑层包括工作节点管理器和查询节点后台工作线程池两个部分;所述工作节点管理器负责维护工作节点的生存状态信息,周期性地检查工作节点的状态信息,删除超时掉线和故障的工作节点,接收代理节点发送的工作节点状态更新;所述查询节点后台工作线程池用于周期性地向代理节点报告自身的状态信息,及周期性地检查各工作节点状态并向代理节点报告。
5.一种分布式搜索引擎系统的实现方法,其特征在于,包括以下步骤:
S1、查询节点注册:查询节点启动之后读取配置文件,查找代理节点发布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。
6.根据权利要求5所述一种分布式搜索引擎系统的实现方法,其特征在于,所述步骤S1查询节点注册,具体包括以下步骤:
S1.1、查询节点读取配置文件,查找代理节点发布RMI的URI地址,生成对代理节点的引用代理,若查找失败则循环等待直至超时,进入步骤S1.2;
S1.2、查询节点调用代理节点公布的注册接口,向代理节点发送自己公布接口的URI,进入步骤S1.3;
S1.3、代理节点中的节点注册管理模块根据步骤S1.2中的URI获取地址并生成查询节点的引用代理,以其URI为键值保存在代理节点的节点状态管理模块中,进入步骤S1.4;
S1.4、代理节点返回此次注册操作的结果信息,true表示成功,false表示失败,查询节点根据代理节点返回的结果信息确定是否已经加入分布式搜索引擎系统,若查询节点注册失败则等待一段时间再次发送注册请求,即返回步骤S1.1。
7.根据权利要求5所述一种分布式搜索引擎系统的实现方法,其特征在于,所述步骤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。
8.根据权利要求5所述一种分布式搜索引擎系统的实现方法,其特征在于,还包括节点的状态更新:工作节点和查询节点加入了分布式搜索引擎系统之后需周期性地向代理节点发送心跳信息,报告节点状态;
所述节点的状态更新,具体包括以下步骤:
G1、工作节点和查询节点封装自身当前的状态信息并把状态信息发送给代理节点,进入步骤G2;
G2、代理节点的节点状态管理模块根据URL更新工作节点的状态信息,如果超过X个心跳周期没有收到工作节点的信息,则认为该工作节点已经故障并删除其在代理节点的注册记录;如果超过X个心跳周期没有收到查询节点的信息,则认为该查询节点已经故障并删除其在代理节点的注册记录;所述X为正整数,所述X值和心跳周期由管理员设置;进入步骤G3;
G3、代理节点向工作节点和查询节点返回当次更新操作的状态信息,true表示成功,false表示失败,如果失败的话,返回步骤G1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010290008 CN101950300B (zh) | 2010-09-20 | 2010-09-20 | 一种分布式搜索引擎系统及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010290008 CN101950300B (zh) | 2010-09-20 | 2010-09-20 | 一种分布式搜索引擎系统及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101950300A CN101950300A (zh) | 2011-01-19 |
CN101950300B true CN101950300B (zh) | 2013-07-24 |
Family
ID=43453802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010290008 Expired - Fee Related CN101950300B (zh) | 2010-09-20 | 2010-09-20 | 一种分布式搜索引擎系统及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101950300B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103596011A (zh) * | 2013-11-20 | 2014-02-19 | 北京中星微电子有限公司 | 图像数据的存储处理方法和装置 |
CN108804446A (zh) * | 2017-04-28 | 2018-11-13 | 西安科技大市场创新云服务股份有限公司 | 一种数据检索方法和系统 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9424351B2 (en) | 2010-11-22 | 2016-08-23 | Microsoft Technology Licensing, Llc | Hybrid-distribution model for search engine indexes |
US9529908B2 (en) | 2010-11-22 | 2016-12-27 | Microsoft Technology Licensing, Llc | Tiering of posting lists in search engine index |
CN102693274B (zh) * | 2011-03-25 | 2017-08-15 | 微软技术许可有限责任公司 | 用于查询执行的动态查询主代理 |
CN102316156A (zh) * | 2011-07-05 | 2012-01-11 | 万达信息股份有限公司 | 一种可动态扩展的任务分发处理方法 |
CN102647416A (zh) * | 2012-03-30 | 2012-08-22 | 上海明复信息技术有限公司 | 基于互联网数据来源控制实现有害信息过滤的系统及方法 |
CN103106117A (zh) * | 2012-12-25 | 2013-05-15 | 青岛海信电器股份有限公司 | 一种资源分配方法及电子设备 |
CN104239004B (zh) * | 2013-06-08 | 2019-05-31 | 上海联影医疗科技有限公司 | 一种通用x射线采集系统 |
CN103516811A (zh) * | 2013-10-22 | 2014-01-15 | 浪潮电子信息产业股份有限公司 | 一种云存储系统中工控机工作状态的监控方法 |
CN103544300B (zh) * | 2013-10-31 | 2016-06-22 | 云南大学 | 一种云环境下可扩展存储索引结构的实现方法 |
CN103678488B (zh) * | 2013-11-12 | 2015-03-04 | 德比软件(上海)有限公司 | 分布式大批量动态任务引擎及采用其处理数据的方法 |
CN103546583B (zh) * | 2013-11-12 | 2017-04-19 | 上海交通大学 | 群智感知系统及群智感知方法 |
CN108205561A (zh) * | 2016-12-19 | 2018-06-26 | 北京国双科技有限公司 | 数据查询系统、方法及装置 |
CN106897736B (zh) * | 2017-01-17 | 2020-05-22 | 华南理工大学 | 一种多领域非协作分布式检索结果融合系统及其融合方法 |
CN106951434B (zh) * | 2017-02-06 | 2020-03-10 | 广东神马搜索科技有限公司 | 一种用于搜索引擎的搜索方法、装置及可编程设备 |
CN107273540B (zh) * | 2017-07-05 | 2021-09-24 | 北京三快在线科技有限公司 | 分布式搜索及索引更新方法、系统、服务器及计算机设备 |
CN107526630A (zh) * | 2017-07-31 | 2017-12-29 | 杭州安恒信息技术有限公司 | 一种解决分布式引擎通信的方法 |
CN107708102B (zh) * | 2017-09-22 | 2021-08-31 | 烽火通信科技股份有限公司 | 一种用于ZigBee网关查询节点设备信息的系统及方法 |
CN108829803A (zh) * | 2018-06-06 | 2018-11-16 | 上海钰登互联网科技有限公司 | 一种基于数据采集的数据分发和处理方法 |
CN113407633A (zh) * | 2018-09-13 | 2021-09-17 | 华东交通大学 | 一种分布式数据源异构同步的方法 |
CN110471947B (zh) * | 2019-07-09 | 2023-11-10 | 广州视源电子科技股份有限公司 | 基于分布式搜索引擎的查询方法、服务器和存储介质 |
CN112307289A (zh) * | 2019-07-30 | 2021-02-02 | 王中华 | 搜索方法、节点及存储介质 |
CN113836186B (zh) * | 2021-09-28 | 2023-10-10 | 北京环境特性研究所 | 基于es搜索引擎的仿真数据查询方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514976A (zh) * | 1998-07-24 | 2004-07-21 | �ָ��� | 用于进行对象检索的分布式计算机数据库系统和方法 |
CN1839385A (zh) * | 2003-04-25 | 2006-09-27 | 汤姆森环球资源公司 | 分布式搜索方法、体系结构、系统及软件 |
-
2010
- 2010-09-20 CN CN 201010290008 patent/CN101950300B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514976A (zh) * | 1998-07-24 | 2004-07-21 | �ָ��� | 用于进行对象检索的分布式计算机数据库系统和方法 |
CN1839385A (zh) * | 2003-04-25 | 2006-09-27 | 汤姆森环球资源公司 | 分布式搜索方法、体系结构、系统及软件 |
Non-Patent Citations (2)
Title |
---|
区伟麟等.搜索引擎性能的优化设计.《计算机工程》.2000,第26卷742-746. * |
田俊华等.分布式并行信息检索系统的设计与实现-基础教育资源搜索引擎个案研究.《现代图书情报技术》.2007,(第8期),76-79. * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103596011A (zh) * | 2013-11-20 | 2014-02-19 | 北京中星微电子有限公司 | 图像数据的存储处理方法和装置 |
CN103596011B (zh) * | 2013-11-20 | 2017-07-04 | 北京中星微电子有限公司 | 图像数据的存储处理方法和装置 |
CN108804446A (zh) * | 2017-04-28 | 2018-11-13 | 西安科技大市场创新云服务股份有限公司 | 一种数据检索方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101950300A (zh) | 2011-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101950300B (zh) | 一种分布式搜索引擎系统及其实现方法 | |
CN101291337B (zh) | 一种网格资源管理系统及管理方法 | |
US10936589B1 (en) | Capability-based query planning for heterogenous processing nodes | |
CN101546325B (zh) | 基于soa的网格异构数据集成方法 | |
CN101454747B (zh) | 用于分布式系统中联合资源发现服务的方法和系统 | |
CN104160381A (zh) | 多租户环境中租户特定数据集的管理 | |
CN101201842A (zh) | 数字博物馆网格及其构造方法 | |
CN101609415A (zh) | 基于中间件的通用服务调用系统及方法 | |
Somasundaram et al. | Semantic-based grid resource discovery and its integration with the grid service broker | |
CN106464584A (zh) | 根据程序设计接口提供路由器信息 | |
US8949390B2 (en) | Management of service quality information in web services | |
CN101625691A (zh) | 一种分布式地学元数据同步实现方法及系统 | |
CN103390018A (zh) | 一种基于SDD的Web服务数据建模与搜索方法 | |
CN101697530B (zh) | 基于实时动态服务质量的服务管理系统 | |
CN103064688A (zh) | 工作流通用服务的方法和系统 | |
CN102063305A (zh) | 基于soa的业务数据的服务封装方法及集成系统 | |
Dong et al. | Dynamic web service composition based on OWL-S | |
CN102929605A (zh) | 一种基于云计算的数据挖掘系统开放接口 | |
Dong et al. | OWL-S Ontology Framework Extension for Dynamic Web Service Composition. | |
CN102902736B (zh) | 基于最小依赖的细粒度科研数据融合系统 | |
He et al. | Design and Implementation of Intelligent Load-Balancing Heterogeneous Data Source Middleware Based on ActiveMQ and XML | |
CN101442496B (zh) | 一种校园网格数据传输服务中数据索引方法 | |
Li et al. | Heterogeneous system integration based on service component | |
US20240037495A1 (en) | Meta-level management system that aggregates information and functionalities of computational-resource management systems and that provides new management functionalities | |
Guo et al. | Design and implementation of data management center based on web services |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130724 Termination date: 20190920 |