检索架构和检索方法

文档序号:6471985阅读:186来源:国知局
专利名称:检索架构和检索方法
技术领域
本发明涉及互联网搜索,尤其是涉及一种检索架构及检索方法。
背景技术
现在的搜索引擎种类有很多,从用途上可以将其分为两类一类是以获取信息为 任务的搜索引擎,即用户通过搜索得到的是符合要求的网页,用户使用该搜索引擎的目的 往往是出于对信息的获取需要,用户的大部分行为是浏览网页;另一类是以获取资源为任 务的搜索引擎,使用这类搜索引擎的用户往往目的非常明确,就是要下载自己需要的资源, 比如视频、音频、电子书、软件等,用户最期望通过这类搜索引擎搜索得到自己想要的资源 并进行快速的数据传输。图l描绘了现有搜索引擎的大体架构。其中,网络爬虫crawler 由一些种子站点为起始,无限增量爬取相应的网络资源,包括下载资源或者网页文件,并将 这些资源以"url-〉文本文档"这样的结构存入海量数据库。建立索弓I的服务器Indexer 定时利用海量数据库中的增量文件,建立起"关键字-〉url"这样的索引文件。索引服务器 Index Server,其利用公共网关接口 (Common Gateway Interface,简称CGI)传来的用户 clientl,…,n的查询请求作为参数,查询索引文件,得到结果,并返回给CGI程序。CGI程 序运行在网络服务器(web server)(通常是apache)上,用户通过客户端或者网页访问提 交查询,于是网络服务器调用CGI程序,并把查询参数(即带有参数的链接)带入CGI程序, CGI将查询参数解析成Index Server能够识别的结构,向Index Server提出查询请求,在 得到Index Server提供的查询结果后,CGI程序还会把结果转化成相应的格式,提交给网 络服务器,并以网页的形式展现于客户端clientl,…,n。 以上是一个普遍通用的网络搜索引擎架构,而针对网络下载资源的搜索引擎略有 不同。已知获取网络资源的方式分为三种通过ftp下载资源;从提供下载资源的门户网站 上找到所需要的资源,并从相应服务器上下载资源;p2p方式下载资源。这三种网络资源搜 索架构基本相同,但是资源来源以及资源收集方式区别很大,以下分别予以详述。
1. ftp方式 ftp的资源搜集模块主要分为两部分,ftp站点获取和ftp站点文件信息搜集。ftp 站点获取模块主要通过站点探测方式。所谓的站点探测的方法,就是对国内互联网上的130 多个网段的21端口一个一个进行探测,如果有效,将其收入。这种方法优点是收录的站点 数目会很多,但是缺点是通常只能支持21端口的匿名站点。当收集了所有有可能成为下 载文件的ftp服务器站点后,接下来要做的就是把各个服务器提供的站点文件信息收集起 来。站点的内容提取,也就是把一个ftp站点的目录信息和文件信息都下载下来,然后进行 建立索引。 由ftp资源搜集的方式也可以看出,由于通常只能支持21端口的匿名站点,所以
包含有用户所需资源的ftp站点可能很少或者用户不可用,因此,通过这种方式获得的网
络资源有限。 2. http搜索
—个非常典型的例子就是百度的音乐搜索,可下载资源来源于各个门户网站,这
些网站有自己的专用服务器提供下载支持,而搜索引擎的工作就是抓取搜集这些种子站点
的资源链接,并根据资源的名称建立索引,为用户提供查询服务。这一类搜索引擎的优点是
门户网站提供的下载服务器很稳定,用户的搜索往往是非常有效的,搜索到的东西绝大部
分都可以下载成功,而且由于是从提供下载的网站上获得资源,可以很容易的做成分类搜
索,资源的获取以及用户的查询都有明确的指向性,召回率和精度都可以很好的保证。 但是这种搜索还是有许多局限性的。由于资源的种类受到了很大的限制,所以不
能满足所有用户的需求;也由于下载资源的服务器的负载、带宽、连接数的限制,使下载速
度受到了很大的影响。 3.p2p搜索 p2p搜索引擎的资源来源是用户发布共享资源的种子给索引模块(tracker);或 者在线用户将共享资源上传到目录服务器。目录服务器将对用户的资源解析成固定的格 式(其中包括文档的名称、md5码、用户的地址信息等),索引模块就是根据这些数据建立索 引。用户对于某个关键词的查询通过CGI交给Index Server, Index Server根据索引文件 得到初始查询结果,同时,通过状态服务器得到用户的在线信息并根据这个结果过滤掉离 线用户的共享结果,将这样的结果返回给用户。用户对某一个资源的下载是通过与拥有这 个资源(整个文件或部分)的用户的连接,分块下载到本地机器上。 这种模式下,用户下载资源的同时也为其他用户提供下载,没有了服务器负载以 及带宽的限制,p2p下载方式为用户提供了相当丰富的资源,并且对于一些热门资源下载速 度会很大。但是当一个资源种子用户不在线甚至其他所有的用户所拥有的文件切片无法拼 凑成整个文件的时候,这个文件就无法被下载了,也就是说这种方式对于用户获取资源有 很大的不稳定性。 可以看出,上述三种资源搜索引擎的架构分别存在着资源数量有限、种类单一、下 载速度不够快、下载不稳定等等缺陷。

发明内容
本发明的主要目的就是解决现有技术中的问题,提供一种检索架构和检索方法, 其可供检索的资源更丰富且资源的下载更加快速、稳定。
为实现上述目的,本发明采用以下技术方案
—种检索架构,包括 资源搜集模块,用于搜集互联网上可下载的文件的信息;
索引创建模块,用于根据搜集结果建立文件索引; 查询服务模块,用于接收用户的查询请求并向用户返回查询结果;禾口 检索服务模块,用于响应所述查询请求,利用所述文件索引进行相应的查询; 其特征在于,所述文件索引为对p2p资源、ftp资源和http资源中的至少两类资源
所建立的索引,所述检索服务模块包括p2p索引服务器、f tp索引服务器和http索引服务器
中相应的至少两者,还包括网关模块,用于接收所述查询请求并分派到各所述索引服务器,
以及接收、整合各所述索引服务器的查询结果并返回给所述查询服务模块。
优选地
所述查询服务模块包括网络服务器和运行在所述网络服务器上的公共网关接口 , 所述查询请求经所述公共网关接口解析后送至所述索引服务器,所述查询结果经公共网关 接口处理后提交给所述网络服务器,所述网络服务器以网页形式向用户展现所述查询结 果。 所述网关模块包括 配置初始化单元,用于初始化所述网关模块的配置文件; 索引服务器初始化单元,用于初始化所述索引服务器的相关参数,包括索引服务 器的IP、端口及类型; 连接建立单元,用于建立与所述公共网关接口和与所述索引服务器的连接;以及
查询启动单元,用于根据查询请求启动在所述索弓I服务器上的相应查询。
所述连接包括按套接字方式建立的连接。 所述查询启动单元包括线程创建单元,用于为每个查询请求创建一个用以完成当 次查询的线程。 —种检索方法,其特征在于,包括以下步骤 A、搜集互联网上的p2p资源、ftp资源和http资源中的至少两类资源的相关文件 信息; B、根据搜集结果建立与资源类别相应的文件索引;
C、接收用户的查询请求; D、响应所述查询请求,分别利用所述相应的文件索引进行相应的p2p式或ftp式 或http式检索; E、整合查询结果并将其返回给用户。
优选地 所述步骤C中,所述查询请求先经网络服务器上的公共网关接口解析,然后由网
关模块分派至各索引服务器,所述步骤D中,各索引服务器利用解析出的关键词进行对应
于服务器类型的查询,并将各查询结果送由所述网关模块整合;所述步骤E中,经整合的查
询结果先返回至所述网关模块,再送入所述公共网关接口进行处理,然后由所述网络服务
器以网页形式向用户展现。 所述步骤D之前还包括如下步骤 Dl、初始化关于所述网关模块的配置文件; D2、初始化所述索引服务器的相关参数,其包括所述索引服务器的IP、端口及类 型; D3、建立所述网关模块与所述公共网关接口和所述索引服务器的连接;
所述步骤D包括如下步骤 D4、所述网关模块根据查询请求启动在所述索引服务器上的相应查询。
所述步骤D3中,按套接字方式建立所述连接。 所述步骤D4中,为所述查询队列的每一个查询请求分别创建一个线程来完成查 询。
本发明有益的技术效果是 本发明的检索架构包括资源搜集模块、索引创建模块、查询服务模块和检索服务模块,其中,索引创建模块对p2p资源、ftp资源和http资源中的至少两类资源建立索引, 检索服务模块包括p2p索引服务器、ftp索引服务器和http索引服务器中相应的至少两者 以及网关模块,网关模块接收查询请求并分派到各索引服务器,以及接收、整合各索引服务 器的查询结果并返回给查询服务模块。这样,本发明的检索架构和其所应用的检索方法改 善了传统的单一的搜索引擎架构,把p2p搜索、ftp搜索、http搜索整合起来,可以利用统 一的如CGI的接口程序实现查询检索,也就是说用户的查询入口只需要一个,而查询的结 果则来源于三个方面,也就是P2p、 ftp和http三者的搜索结果。因此,采用本发明,吸收 三种搜索引擎的优点并弥补各自的不足,可为用户提供一个资源丰富、稳定、高速的下载平 台。将三种搜索整合在一起,还减轻了系统负担,并且可以对于查询的内容以及查询的结果 进行更加复杂的处理。


图1展示了传统搜索引擎的大体架构; 图2展示了根据本发明一种实施例的检索架构的整体框架; 图3展示了根据本发明一种实施例中网关模块的实施原理; 图4展示了根据本发明一种实施例中网关模块的工作流程; 图5展示了图4中的Thread ConnectServers的算法描述; 图6展示了图4中的Creat commitSearch的过程; 图7展示了图6中通过线程来完成查询的过程; 图8展示了 commitSearch在一个线程中的执行过程; 图9展示了根据本发明一种实施例的检索方法的流程; 图10展示了一种实施例的检索方法中关于网关模块的处理步骤。 本发明的特征及优点将通过实施例结合附图进行详细说明。
具体实施例方式
请参考图2,检索架构包括资源搜集模块、索引创建模块、检索服务模块和web查 询服务模块。其中,索引创建模块对p2p资源、ftp资源和http资源中的至少两类资源建 立索引,检索服务模块包括P2p索引服务器、ftp索引服务器和http索引服务器中相应的 至少两者。在一种优选的实施例中,索引创建模块建立关于p2p资源、ftp资源和http资 源的三类索引,检索服务模块相应包括P2p、 ftp和http三种索引服务器。
web查询服务模块包括web服务器和运行在web服务器上的公共网关接口 CGI, 公共网关接口 CGI提供用户和系统之间交互的查询接口。检索服务模块包括网关模块 GateWay,网关模块GateWay负责监听从公共网关接口 CGI传来的查询请求,并将监听到的 查询请求分派给各个索引服务器,接收并汇总各个索引服务器的查询结果,并通过公共网 关接口 CGI处理后返回给客户端。
检索架构基本工作原理如下 用户通过客户端(例如Maze客户端)查询所需资源,包含查询关键词的查询请求 通过公共网关接口 CGI传递到网关模块GateWay ; 网关模块GateWay监听到查询请求,将查询请求分派给各个索引服务器;
各个索引服务器根据查询关键词、利用相应的文件索引进行资源查询,并将得到 的查询结果返回给网关模块GateWay ; 网关模块GateWay汇总、整合各索引服务器的返回结果,并将所得数据提交给公 共网关接口 CGI,最后经由web服务器返回给客户端。 图3展示了利用网关模块GateWay实现查询的实施原理图,其优选采用C++语言
编程实现。具体说明如下 Client——即提请搜索的客户端; Search Model——一个CGI程序,用于接收客户端的查询请求;
InitializeGateWay——用于初始化GateWay系统的程序,如初始化conf文 件,log文件等。其功能可通过realCGI. cpp文件中的main() 、 buildBadMD5List()、 initServers()以及Identify, cpp文件中的InitSetup()来实现; RevSearchRequset——用于接收从Search Model传送的查询请求。其功能可通
过realCGI. cpp文件中的main () 、 commitSearch ()来实现; Commitsearch——用于按照查询请求在服务器运行查询程序; IndexSvr 0-4、 Ftp Server、 HTML Server-分别为4个p2p索引服务器、一个
Ftp索引服务器和一个http索引服务器,提供各自的查询服务; CollectResult——收集从所有服务器中返回的查询结果,提交给用户。其功能可 通过realCGI. cpp文件中的main () 、 commitSearch ()来实现。
如图4所示,网关模块GateWay工作的基本流程如下
-Initialize Configure 初始化配置文件,打开写有配置文件内容的文本,并将配置文件内容读入缓冲区 InitSetupBuffer中,以等待后面程序的分析。具体实现上,优选在Identify, c卯中有两个 InitSetup函数,一个有参数chaWpath,一个没有参数,后者以NULL为参数直接调用了前 者,所以在GateWay的初始化中,配置文件直接使用了 bingle. conf文件。
-build BadMD5List 在优选的实施例中,建立Bad MD5的表单以提供给后续的涉及MD5的查询时使用。 具体做法是将badmd51ist. txt中的内容读入一个文件输入流tmpif中,然后把tmpif中的 内容建立badMD5List。在后续步骤中,例如在后文中将述及的CheckBadMD5时,可先判断请 求查询的文件的MD5是否在Bad MD5的表单中,并根据判断结果选择执行下一步动作。
_Init Servers 初始化可用的Index服务器的相关参数,包括服务器的ip、端口、类型。优选将 InitSetipBuffer (其中是bingle. conf之中的内容)中的数据写入一个SearchServer类 的数组中,servers [h]. Host、 servers [h]. Port、 servers [h]. Version被写入bingle. conf 中serverh的相应的内容,数组由指针servers指示。
-Great Thread Co皿ectServers 建立与多个IndexSvr、 Ftp Server、 HTML Server的连接。具体工作流程请参考 图50其中,程序中共建有server皿m个SearchServer类,对应server皿m个提供查询的 服务器。每一个SearchServer类有一个socket (套接字)处理代码数组,其包含sock皿m 个元素,GateWay从中找出sockFlag[i] = _1的第一个i,申请一个新的socket处理代码newfd,用它和这个SearchServer类对应的索引服务器(IndexSvr、 Ftp Server或者HTML Server)建立连接,并将sockFD[i]设置为newfd ;对所有servers中的IndexSvr做这个工 作。 利用select ()函数,允许阻塞网关模块GateWay的执行直到需要网关模块 GateWay时再为每个索引服务器提供服务,且查询任务队列采用waitcount技术,这样,网 关模块GateWay可以更有效地处理向多个索引服务器查询的情况。
-Great commitSearch 请参考图6, commitSearch具体可以是一个函数,其作用是取出查询队列中的一 个元素并完成相应的查询。该步骤优选又包括以下过程 __Prepare Socket for search request (艮卩Prepare Socket for CGICo皿ect) 采用socket方式建立与CGI程序的连接。 __Accept and Push Search request into mClientSock 用户的查询请求提交给CGI程序,网关模块GateWay从CGI程序中提取出查询请 求,如果提取查询请求成功,就将查询请求放入GateWay的自己的查询队列中,即将这些请 求的socket放入一个队列mClientSock中。
__Great Thread commitSearch Creat Thread commitSearch的含义是,创建一个线程让commitSearch函数执行, 也就是说对于每个查询任务都建立一个线程来完成查询,这样就实现了多线程操作。
如图6所示, 一旦建立好与查询程序即CGI模块的连接,就开始时刻监听CGI程 序,一旦有一个查询请求进入,就把查询请求放入查询队列(这个队列是个共享数据区域, 由多个CommitSearch线程共享),并且创建一个CommitSearch线程来完成这个查询,也就 是对于每个查询都创建一个线程完成查询。 一种优选的实施例中,通过线程来完成查询的 处理过程如图7所示,网关模块GateWay向CGI程序返回的几个结果,包括总的查询结果 数result皿m、向用户显示的结果数show皿m、查询结果的数据长度outputlen以及查询结 果数据data。 如图8所示,commitSearch函数在一个线程中的执行过程如下
首先,从队列mClientSock中取出一个等待处理的socket处理代码(执行 mClientSock. pop ()),接收查询请求(执行Recv request)并存入一个SearchSt潔t结构 中,如果是MD5查询,优选先调用checkBadMD5()函数来看是否为Bad MD5。接着,网关模 块GateWay分别与CGI和索引服务器通信,将来自CGI的用户查询请求发送到servernum 个索引服务器中(即执行for(i = 0 ;i < server皿m ;i++)这一段操作)。然后,网关模 块GateWay接收从各个索引服务器返回的查询结果并将这些结果整合。最后,网关模块 GateWay将整合过的查询结果通过CGI提交给用户。 根据本发明的另一方面,还提供一种用于本发明的检索架构的检索方法。如图9 所示,优选的实施例包括以下处理步骤 步骤A、搜集互联网上的p2p资源、ftp资源和http资源的相关文件信息;
步骤B、根据搜集结果建立与资源类别相应的文件索引;
步骤C、接收用户的查询请求; 步骤D、响应查询请求,分别利用相应的文件索引进行相应的p2p式或ftp式或http式检索; 步骤E、整合查询结果并将其返回给用户。 优选的实施例中,在步骤C,查询请求先经网络服务器上的公共网关接口解析,然 后由网关模块分派至各索引服务器,在步骤D,各索引服务器利用解析出的关键词进行对应 于服务器类型的查询,并将各查询结果送由网关模块整合;在步骤E中,经整合的查询结果 先返回至网关模块,再送入公共网关接口进行处理,然后由网络服务器以网页形式向用户 展现。 如图10所示,优选地,步骤D之前还包括如下处理步骤
初始化关于网关模块的配置文件; 初始化索引服务器的相关参数,其包括索引服务器的IP、端口及类型; 建立网关模块与索引服务器的连接,优选地,按套接字方式建立连接; 步骤D中,网关模块根据查询请求启动在索引服务器上的相应查询。该步骤优选
又包括如下处理步骤 以套接字方式建立网关模块与公共网关接口的连接; 网关模块从公共网关接口中提取查询请求,如果提取查询请求成功,则将查询请 求的放入查询队列中; 为查询队列的每一个查询请求分别创建一个线程来完成查询。 关于本发明检索方法更详细的内容可参考本发明检索架构的实施例的原理及工 作过程的说明。 根据本发明的优选实施例,设置网关模块GateWay ,有利地实现了 p2p搜索、ftp搜 索和http搜索的统一,给用户一个唯一的查询入口却可以得到三种搜索的结果。其具有如 下显著优点 1.由于p2p搜索、http搜索的存在,弥补了单纯的ftp搜索的资源不足的缺点。
2.由于p2p搜索以及ftp搜索的存在,弥补了 http搜索由于受到连接数、带宽、服 务器负载等限制导致的下载速度不高的缺点。 3.由于ftp搜索、http搜索的存在,弥补了p2p搜索对于较为冷门的资源,下载不 稳定的缺点。 4.网关模块GateWay中还可以方便的加入更加复杂的对搜索结果的处理工作。如 果对于每一个用户的每一次查询都要启动一个CGI服务进程,而进程的特性导致系统资源 占用率很大,对于大量的请求会严重导致系统负载过高。引入网关模块GateWay,对于每个 查询请求的处理启动一个线程,则大大节约了系统资源,也使得这个模块中可以对查询以
及查询结果进行更加复杂的处理,比如对于敏感词的过滤、对于资源的多个镜像的归并地等。 需指出,索引创建模块以及检索服务模块相互关联,由于三种检索要统一在一起, 所以查询索引的入口以及输出的查询结果格式应统一,这一点也要反映在索引创建过程 中,从而满足基于不同文件索引的统一查询。 另外,尽管在本发明一种优选的实施例中包括p2p搜索、ftp搜索和http搜索三 部分,应了解,在本发明其它的实施例中,还可以将p2p搜索、ftp搜索、http搜索中任意两 者整合起来形成检索架构,同样可以利用统一的如CGI程序实现检索,为用户提供两种检索的结果。 以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定 本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在 不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的 保护范围。
权利要求
一种检索架构,包括资源搜集模块,用于搜集互联网上可下载的文件的信息;索引创建模块,用于根据搜集结果建立文件索引;查询服务模块,用于接收用户的查询请求并向用户返回查询结果;和检索服务模块,用于响应所述查询请求,利用所述文件索引进行相应的查询;其特征在于,所述文件索引为对p2p资源、ftp资源和http资源中的至少两类资源所建立的索引,所述检索服务模块包括p2p索引服务器、ftp索引服务器和http索引服务器中相应的至少两者,还包括网关模块,用于接收所述查询请求并分派到各所述索引服务器,以及接收、整合各所述索引服务器的查询结果并返回给所述查询服务模块。
2. 如权利要求1所述的检索架构,其特征在于,所述查询服务模块包括网络服务器和 运行在所述网络服务器上的公共网关接口 ,所述查询请求经所述公共网关接口解析后送至 所述索引服务器,所述查询结果经公共网关接口处理后提交给所述网络服务器,所述网络 服务器以网页形式向用户展现所述查询结果。
3. 如权利要求2所述的检索架构,其特征在于,所述网关模块包括 配置初始化单元,用于初始化所述网关模块的配置文件;索引服务器初始化单元,用于初始化所述索引服务器的相关参数,包括索引服务器的 IP、端口及类型;连接建立单元,用于建立与所述公共网关接口和与所述索引服务器的连接;以及 查询启动单元,用于根据查询请求启动在所述索引服务器上的相应查询。
4. 如权利要求3所述的检索架构,其特征在于,所述连接包括按套接字方式建立的连接。
5. 如权利要求3所述的检索架构,其特征在于,所述查询启动单元包括线程创建单元, 用于为每个查询请求创建一个用以完成当次查询的线程。
6. —种检索方法,其特征在于,包括以下步骤A、 搜集互联网上的p2p资源、ftp资源和http资源中的至少两类资源的相关文件信息;B、 根据搜集结果建立与资源类别相应的文件索引;C、 接收用户的查询请求;D、 响应所述查询请求,分别利用所述相应的文件索引进行相应的p2p式或ftp式或http式检索;E、 整合查询结果并将其返回给用户。
7. 如权利要求6所述的检索方法,其特征在于,所述步骤C中,所述查询请求先经网络 服务器上的公共网关接口解析,然后由网关模块分派至各索引服务器,所述步骤D中,各索 引服务器利用解析出的关键词进行对应于服务器类型的查询,并将各查询结果送由所述网 关模块整合;所述步骤E中,经整合的查询结果先返回至所述网关模块,再送入所述公共网 关接口进行处理,然后由所述网络服务器以网页形式向用户展现。
8. 如权利要求7所述的检索方法,其特征在于,所述步骤D之前还包括如下步骤 Dl、初始化关于所述网关模块的配置文件;D2、初始化所述索引服务器的相关参数,其包括所述索引服务器的IP、端口及类型;D3、建立所述网关模块与所述公共网关接口和所述索引服务器的连接;所述步骤D包括如下步骤D4、所述网关模块根据查询请求启动在所述索引服务器上的相应查询。
9. 如权利要求8所述的检索方法,其特征在于,所述步骤D3中,按套接字方式建立所述 连接。
10. 如权利要求9所述的检索方法,其特征在于,所述步骤D4中,为所述查询队列的每 一个查询请求分别创建一个线程来完成查询。
全文摘要
本发明揭示了一种检索架构,包括资源搜集模块、索引创建模块、查询服务模块和检索服务模块,索引创建模块对p2p资源、ftp资源和http资源中的至少两类资源所建立索引,检索服务模块包括p2p索引服务器、ftp索引服务器和http索引服务器中相应的至少两者以及网关模块,网关模块用于接收查询请求并分派到各索引服务器,以及接收、整合各索引服务器的查询结果并返回给查询服务模块。本发明还揭示了一种用于该检索架构的检索方法。本发明可将三种搜索整合在一起,吸收三种搜索引擎的优点并弥补各自的不足,为用户提供一个资源丰富、稳定、高速的下载平台。
文档编号G06F17/30GK101763392SQ20081024185
公开日2010年6月30日 申请日期2008年12月23日 优先权日2008年12月23日
发明者康泽宇, 徐阳, 李挥, 李晓明, 雷凯 申请人:北京大学深圳研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1