专利名称:内容定向的索引和搜索方法与系统的制作方法
技术领域:
本发明涉及各种文件的索引和搜索,特别是二进制文件,例如包括软件程序和补丁在内的可执行文件,包括RAR文件和ZIP文件在内的压缩文件,包括数字图象、MP3文件和其他视频与音频文件的多媒体文件。本发明还涉及对上述文件进行索引和搜索后的排序,以及快速可靠地搜索和下载上述文件的方法。
背景技术:
在当今日益复杂的技术世界,用于索引和搜索因特网内容的方法在大量的内容丰富的应用中充当了很重要的角色,例如普通的因特网搜索引擎或企业搜索引擎。
搜索引擎通常包括四个核心部分搜索蜘蛛(Spider)、语法分析器(Parser)或索引器(Indexer)、查询引擎(Query engine)和Web界面。搜索蜘蛛又称为机器人(Robot)或网络爬虫(Web crawler),是基于Web的搜索引擎的核心。搜索蜘蛛是一种独立的网络客户端程序,它能自动地连接到Web服务器并请求网页。其中会对响应进行检查,如果请求成功,则可获取网页并建立索引。在建立索引阶段,将文本网页内的词与词位置等其他信息一起存入索引内。创建的搜索引擎索引在原理上与书的索引相似。书的索引针对特定词,而搜索引擎的索引包含有词以及对包含有这些词的网页的参考。对某一关键字创建索引后,查询引擎将提供对包含有该关键字的网页的搜索。由于包含某一特定关键字的网页数量很大,因而还需要根据某些特定规则对这些网页进行排序,例如,根据被其他网页引用的数量进行排序。最后,使用Web界面浏览匹配网页的分类表。Web界面的设计和布置不属于本申请的范围。
总之,文本Web搜索引擎对Web执行增量扫描和分析,提取关键字,并生成索引以便之后响应用户的查询进行搜索。二进制Web搜索引擎更为复杂。以下介绍的图片Web搜索引擎便是其中的一个例子。如果可以基于每张图片的内容手动加入关键字,便可以像文本网页一样进行索引和搜索。但是,这需要大量的体力劳动对Web上的图片添加标识。无可置疑的,这种方法实际不可行,因为Web上存在大量的不断增加的图片。
为了使搜索过程能自动进行,Web搜索引擎一般使用图片的文件名或其他文字来标识该图片。但是,这种方法生成的搜索结果很差。Web上的多数图片都没有合适的文件名来表达其内容。此外,文件名一般都很短,而且多数文件名只有数字,不能准确清楚的描述文件的内容。而且这也进一步降低了搜索结果的准确性。此外,由于因特网的全球性,Web上的图片使用各种不同的语言来标识和描述,这进一步使索引和搜索正确的图片文件的过程变得复杂了。
多数现在使用的索引和搜索技术使用文本来实现前面介绍的索引和搜索过程。此外,少数索引和搜索技术以图片文件为目标,关注于图片的特定属性,例如颜色、亮度、线条的样式等等。这种方法在以下引用文件中给出了介绍Chad Carson等,BlobworldA system for region-based image indexing andretrieval,the Third Int.Conf.on Visual Information Systems,June 1999;Anil K.Jain and Aditya Vailaya,Image retrieval using color and shape,Pattern Recognition,29(8),1996;以及Michael Ortega等,Supporting Similarity Queries in MARS,ACM Multimedia 97.尽管这一方法是对纯文本搜索方法的一种改进,但这种方法对其搜索的二进制文件的类型以及用于查找目标文件的参数仍存在局限性。此外,二进制Web搜索引擎还需要解决下载问题,因为二进制文件可能非常大。然而,很少有搜索方法提供了对这一问题的解决方案。因此,急需提出一种改进的索引和搜索方法,以便能够定位和下载使用现有的方法不容易准确提供的想要的二进制文件。
发明内容
本发明提出并介绍了一种内容定向的索引和搜索(Content Oriented IndexaNd Search,简称COINS)技术。COINS介绍了一种根据唯一标识二进制文件的签名对所述二进制文件(例如多媒体文件)进行索引,并通过对在索引阶段建立的索引图进行遍历(walk through)来搜索相关文件的方法。具体来说,COINS可用于精确地标识一个唯一内容的多个源(根据URLs),该多个源可用于增加下载速度。最后,COINS还可与基于文本的索引和搜索技术相结合来实现二进制文件搜索引擎,其中以二进制文件的URL作为搜索结果,而不再以Web文件的URL为搜索结果。
本发明提供一种生成二进制文件索引图数据库的方法和系统,包括如下步骤获取目标二进制文件列表,其内包含有目标二进制文件的主要识别信息;使用合适的算法计算所述二进制文件的内容签名;存储所述内容签名及与所述内容签名对应之文件的识别信息,从而组成所述二进制文件索引图数据库。
本发明的一个实施例中,提供一种方法和系统,用于进一步识别与多个二进制文件相关的关键字,所述多个二进制文件具有相同的文件内容签名,以及将所述多个关键字合并为关键字集合,从而将所述文件内容签名与所述关键字集合相关联。
另一个方面,本发明还提供一种生成文件内容签名的方法和系统,包括如下步骤将所述文件分割为大小合适的多个片段;使用合适的算法计算所述片段的内容签名,从而获得多个片段内容签名;基于所述多个片段内容签名生成所述文件内容签名。
根据本发明的又一个方面,还提供一种生成文件内容签名的方法和系统,包括如下步骤将所述文件分割为大小合适的多个片段;从每个片段中提取多个样本;使用合适的算法利用所述片段的多个样本来计算所述每个片段的内容签名,从而获得多个片段内容签名;基于所述多个片段内容签名生成所述文件内容签名。
本发明的一个优选实施例中,提供一种方法和系统,使用合适的算法例如SHA-1基于所述片段签名来计算所述文件的内容签名,从而替代将所述片段链接在一起的方案。
根据本发明的再一个方面,提供一种搜索因特网上的二进制文件的方法和系统,包括如下步骤接收来自发起源的包含有目标二进制文件的搜索查询;在索引图数据库中找出多个内容签名,所述多个内容签名链接至多个二进制文件,并链接至描述所述多个二进制文件的多个关键字和文件识别信息;将与所述搜索查询相关的所述多个二进制文件呈现给所述发起源。
根据本发明的另一个方面,提供一种下载目标二进制文件的方法和系统,包括如下步骤生成索引图数据库,所述索引图数据库包含有多个二进制文件的文件识别信息以及使用合适算法计算出的与所述多个二进制文件对应的文件内容签名;接收来自发起源的针对目标二进制文件的下载查询,其中所述目标二进制文件在所述索引图数据库内链接至对应的内容签名,且所述对应的内容签名链接至多个具有相同内容签名的二进制文件URL;从所述多个文件URL下载所述目标二进制文件的多个部分;在发起源的机器内整合所述目标二进制文件的所述多个部分以获得完整的目标二进制文件。
本发明的一个优选实施例中,提供一种验证所述下载的二进制文件的完整性的方法和系统,另一个优选实施例中,本发明提供一种再下载和恢复下载的目标二进制文件的错误部分的方法和系统。
以下附图组成说明书的一部分,对本发明的实施例给出说明,并与对实施例的描述一起解释本发明。
图1是使用本发明的索引和搜索技术的四层COINS系统的示意图;图2是本发明索引图的一个示例,特别是两个多媒体文件有着相同的内容的示例图;图3-1、3-2和3-3是遍历本发明索引图的第一级搜索过程的示意图;图4-1和4-2是遍历本发明索引图的第二级搜索过程的示意图;图5是本发明的索引和搜索方法在端到服务器和端(P2SP)内容传递网络(CDN)下载引擎领域的应用示意图。
具体实施例方式
下面结合附图对本发明进行具体的描述。但这些具体描述不是对本发明的限制。相反,其只是用于解释本发明。
系统结构图1是总体系统的示意图,其中包括四层索引层101、搜索层102、排序层103和应用层,该应用层又包括二进制文件搜索引擎104和下载引擎105。本申请中所使用的术语“二进制文件”包括多媒体文件,例如数字图片、MP3文件、数字视频文件和其他音频和视频文件。所述二进制文件还包含其他文件,例如可执行文件和压缩文件(如RAR文件和Zip文件)。索引层101为底层,它对由搜索蜘蛛获取的网页在该层中进行分析,并对该网页内的二进制文件的URL以及周围语境(context)的文本进行检索和索引。然后,在该层中建立索引图和语境索引映射图。第二层是搜索层102,该层提供隐式搜索(implicitsearch)和显式搜索(explicit search)两种服务。COINS搜索即为遍历COINS索引图的过程。第三层为排序层103,能通过加权属性和内容相关性对搜索结果进行排序。最后,第四层基于COINS包括两个应用COINS二进制文件搜索引擎104和下载引擎105。
COINS技术是本发明的核心,其提供一种通过内容或数字签名来索引和搜索因特网上的二进制文件(例如可执行文件和多媒体文件)的模型。本节首先介绍内容签名,然后集中讨论索引层、搜索层和排序层的设计,最后解释COINS多媒体文件搜索引擎和下载引擎。
内容签名内容签名用于标识COINS索引中的文件的唯一性。如果两个文件具有相同的内容签名,即使该两个文件存放在两个不同的URL下,这两个文件也将被作为相同文件来处理。这一点对搜索和下载因特网上包括有不同多媒体文件例如图片、MP3和音频/视频的二进制文件来说非常重要。例如,一张图片有时可能出现在不同的网页上,具有不同的名称不同的描述。然而,传统的搜索引擎将这种情况视为不同的图片,而本发明可正确地将其视为相同的图片。因此,本发明可用于明显地提高下载速度,同时提高搜索结果以及排序的精确性和相关性。
内容签名计算算法实际用于计算内容签名的算法可根据执行者的选择而不同。唯一需要注意的是,要使用能保证每个计算结果的唯一性的算法。本发明可以采用各种算法来计算内容签名,例如戴维斯-迈耶(Davies-Meyer)哈希函数。其中,可直接使用、或经过用户化后使用“安全内容哈希”方法来计算二进制文件的内容签名。这种方法又称为“安全哈希算法”(SHA)。
安全哈希算法SHA-1用于计算消息或数据文件的压缩形式。当输入任何长度小于264位的消息时,SHA-1生成160位的输出,称为消息摘要。然后将该消息摘要输入签名算法,由该签名算法生成或验证该消息的签名。
SHA-1被称为是安全的,是因为该算法不可能找到对应给定消息摘要的消息,或不可能找到生成相同消息摘要的两个消息。
关于详细的计算介绍,请参考因特网RFC 3174,其可以从链接获得http//www.faqs.org/rfcs/rfc3174.html。
生成内容签名的方法二进制文件一般都很大。因此,如果整个文件需要由SHA-1算法进行计算以生成内容签名并将其传递给服务器,将需要占用大量的资源。一种改进方法是将该文件分割成每个大小为256K(或其他大小)的N个片段(最后一个片段可能没有256K),并从每个片段中取样。例如,从一个片段中提取的样本可以是该片段的开始部分,也可以是该片段的结尾部分。有些时候,提取的样本可以是该片段的开始部分和结尾部分的结合。
取样后,本发明可基于经SHA-1算出的样本而计算片段内容签名。[mx8]所述片段内容签名可链接在一起表示源文件的签名。但是,缺点是签名通常会比较长(例如,假设每个片段ID为20字节,1GB的文件的签名将为20字节*4000=80KB)。因此,将在客户端与服务器之间占用大量的计算资源,包括网络资源、CPU资源、内存以及存储器资源,以用于执行内容签名相关计算,例如内容签名的完整性校验过程中的计算。
本发明介绍了一种明显减少所需的计算资源且不会影响签名的准确性的新方法。代替将片段ID链接在一起,本发明再次使用SHA-1算法基于这些片段ID计算出签名。然后将这一签名用作内容签名。使用这种方法的好处是增加了标识将要搜索或下载的文件的效率,并同时减少签名的大小,以及减少了需要的计算资源,特别是减少了网络流量。
COINS索引COINS索引包括统一资源标识符(URI)索引图和语境索引映射图。
COINS URI索引图该索引图包含有几种类型的元素,一般用于描述和标识二进制文件,包括内容签名、页面URI和文件URI。后两个元素又称为文件的主要识别信息。此外,二进制文件还可以有其他类型的识别信息,包括但不限于周围的语境文本例如锚文本(anchor text)和描述文本,以及文件URI属性例如文件大小和文件协议等。这些定义为文件的次要识别信息。主要识别信息和次要识别信息一起定义为文件识别信息。
本申请中,符号(P)用于表示页面URI,(F)用于表示文件URI,(C)用于表示内容签名。由于“统一资源定位”(URL)的概念是“URI”的子集,因而页面URI的一个示例便是页面URL,文件RUI的一个示例便是文件URL。(P)和(F)之间存在多对多的映射关系。“多对多”是指多个文件到多个页面之间的内部链接,反之亦然。
此外,定义以下条件理论1如果其对应的(C)相同,任何两个不同的(F)指向相同的文件。
理论2任何(F)可从多个(P)引出,同时任何(P)可指向多个(F)。
索引原理基于索引文本的传统技术的输出是关键字列表,它指向具有该关键字的网页。不同地是,COINS索引的输出是包含(P)、(F)和(C)的三维图。(P)和(F)构成用于遍历搜索索引图的主要二维图,(C)位于第三维,与(F)有链接。
索引方法搜索蜘蛛程序通过分析(P)来扫描因特网,(P)是通过输入的源网址以及从源网址递归的引用网址找出。当搜索蜘蛛程序发现一个合适的目标二进制文件(F)时,计算其(C)。如果(P)中含有(F),增加一个从(P)到(F)的链接。同样地,如果两个文件生成相同的(C),增加从两个(F)到(C)的两个链接,尽管这两个(F)的文件名和地址可能完全不同。因此,便可以建立3-D索引图数据库,并且将出现的多对多关系按照上述定义的条件在该数据库中表示出来。
图表建立索引图后,理解其如何用于查找想要的二进制文件很重要。图2所示为索引图的一种可能形式。如图所示,一个(F)可被多个(P)引用。例如,F3被P1、P3、P4和P5引用。同时,一组(F)可来自一个(P),例如F1、F2和F3均来自P1。最后,如图中所示,有两个(F)即F5和F8指向位于第三维的一个(C2)。这表示位于F5和F8的文件具有完全相同的内容。也就是说,F5和F8指向相同的文件。
语境索引映射图语境是一组与关键字相关的语言,用于描述一个文件。对于具有相同(C)的文件,他们的语境可以合并或相结合。因此便可能获得具有相同(C)的(F)的列表与一组关键字之间的映射关系。
此外,关键字在语境中出现的次数被记录下来。当将两个语境合并时,如果该关键字在两个语境中都有出现,则将给定关键字对应的在两个语境中出现的次数相加。因此,关键词结果集如下{关键词1*次数1,…,关键词i*次数i}。这样的话,便可以建立映射关系列表,每个映射与以下表示类似{(F1),…,(Fi)}→(C)→{关键词1*次数1,…,关键词i*次数i}执行以上步骤后,进行反向处理以生成每个关键字和(C)列表之间的新的映射关系如下关键字i→{(C1)*次数1,…,(Ci)*次数i}…,其中每个(C)还映射至(F)列表结果,搜索关键字“关键字i”生成多个(C),其中每个(C)与多个(F)相关联。更重要的是,通过遍历该索引图,可以找到更多相关的(F)。
COINS搜索搜索二进制文件可分为显式搜索和隐式搜索。显式搜索从用户界面通过自动生成的关键字或者终端用户输入的关键字来触发(更像传统搜索引擎的搜索)。隐式搜索由一个事件触发,例如从下载引擎应用程序下载文件。本发明使用的搜索查询可以是关键字或文件URI。在隐式搜索和显式搜索这两种搜索中,搜索查询都可以是关键字或者文件URI。
搜索推论当从因特网显式地或隐式地搜索任何(F)时,对COINS索引图执行遍历可生成相当大量的搜索结果。这些结果一般包含有嵌入(P)内的多种商业逻辑。该商业逻辑可以是瑞奇马丁新发行的专辑或拉丁男歌手的MP3文件的汇集。
定义COINS搜索,是指为搜索某一特定二进制文件而进行的遍历索引图的过程[mx9]。
为了开始所述搜索即遍历过程,深度优先(DFS)或广度优先(BFS)搜索算法皆可被用于遍历索引图。DFS和BFS是以系统的方式浏览索引图的有效方法。这两种方法从定向图中的一个节点v(图中的任意一个节点)开始,并访问从节点v可以到达的所有节点。这两种方法的区别在于其访问节点的顺序。
DFS首先从最近访问之节点的边界(edge)进行查找,也就是说,DFS首先尽可能的往深度方向查找。
BFS按源节点被访问的顺序查找其边界。它首先查找当前节点所有边界,然后访问下一个节点。
遍历将生成(F)的列表。所述遍历的步骤可直观化为如下1.搜索目标二进制文件(F4)的搜索查询被输入系统。此搜索查询可来自任一发起源,例如终端用户/客户端,或下载引擎生成的计算机命令,或通过其他合适的方式产生。为启动所述搜索过程,反向引用三个(P)(P2)、(P4)和(P6)。结果,根据反向引用的(P2)、(P4)和(P6),可以获得额外的四个(F),标识为(F2)、(F3)、(F6)和(F8)。这在图3-1、3-2和3-3中示出。第一步中,该组(P)的深度为1。
2.对于从前一步骤中获得的四个(F)中的每一个,执行相同的反向查找以获得另一组(P)(P1)、(P3)和(P5)。然后可以进一步获得一组三个(F)(F1)、(F5)和(F7)。这在图4-1和4-2中示出。第二步中,该组(P)的深度为2。
3.通过递归,可对整个索引图进行遍历直至遇到中止条件。该中止条件包括但不限于*遍历的深度数,*汇集的(F)的总数量,*遍历的超时,*访问的(P)的数量。
4.为了避免索引图遍历的无止尽的循环,可忽略对较高深度级实体的引用。换句话说,步骤2中不会访问(P2)、(P4)和(P6),因为其深度为1,已经在第一层的遍历中被访问过了。
COINS排序搜索过程完成后,一组二进制文件被呈现给终端用户。呈现的二进制文件包括与目标二进制文件相同的文件,或者与目标二进制文件不同但通过其共享的共用商业逻辑或其他文件属性与目标二进制文件相关的文件。
通常情况下,从索引和搜索过程获得的结果还需要进一步进行排序和分类,以便于该搜索结果更有用。因此,作为本发明的一个实施例,还需要根据几个对象模型对搜索结果进行评估和排序。
对象模型以下关键信息将在对象模型[mx11]中被存储,以增强排序结果以及实现增值商业逻辑。
·(P)将存储访问次数、引用次数、实时服务器或对等带宽、在线状态等。
·(F)将存储引用期、访问次数、源、源状态(即带宽、在线等)等。通过加权属性排序(C)列表或源(F)加权属性可在各种引擎中进行定制。具体来说,在下载引擎中,加权属性可基于以下确定*文件平均下载速度*文件下载次数*可用资源数量*文件大小因此,如果下载更快并且更流行的话,该(C)可以得到更高的排序。通过内容相关性排序(C)列表或源(F)通过内容相关性排序(C)列表主要基于相关的关键字“次数”值。例如,使用关键字“Hello World”搜索时,在语境索引映射表内具有如下关系“Hello”→{(C1)*50,(C2)*25}“World”→{(C2)*30,(C3)*17}然后,生成的(C)的排序组为{(C2),(C1),(C3)},因为(C)的对应次数组为{(25+30),50,17}。
(F)的访问次数将访问次数作为排序规则之一,是本发明的首创。访问次数指被终端用户访问的总数量。但是,如果(Fi)和(Fj)指向同一(C),则认为(Fi)或(Fj)的访问次数为Count(Fi)和Count(Fj)的总和。
最后值得指出的是,这种策略也可应用于一般的搜索引擎。
(F)列表的排序列表(F)的排序是(F)的加权属性的函数。对于搜索结果列表中的每个(F),可计算出一个排序值。排序计算应该掌握以下这些事实1)搜索深度级level(n)(F)没有level(n-1)(F)的相关性高;
2)从其包含的实体的引用次数次数越大,该(F)越流行,因此终端用户越感兴趣。在不止一个(F)映射至同一个(C)的情况下,每个(F)的引用次数是所有(F)的引用次数的总和。例如,如果a)(F1)→(C)且(F2)→(C),以及b)RC((F1))=10且RC((F2))=15c)则,FRC(F1||F2)=RC((F1))+RC((F2))=25]]>d)同样,如果(F1)→(C1),(F2)→(C2),且(C1)<>(C2),则FRC(F1)=RC(F1)且FRC(F2)=RC(F2)其中RC指引用次数的函数,FRC指最后引用次数的函数,(C1)<>(C2)表示C1不等于C2。
3)来自终端用户的累积访问次数访问次数越多,该(F)对于终端用户来说越流行。
4)(F)的类型相同类型(可能有不同的扩展名),例如音乐文件,意味着更大的相关性。
5)其包含的实体的访问次数(P)包含的实体得到的访问越多,(F)对于终端用户来说越流行。
6)自定义挂钩(Custom Hook)为应用程序提供入口点以输入与应用程序相关的属性。
注意,上述每个属性具有相关联的系数,该系数受实时调整的影响。COINS搜索引擎和下载引擎以下将详细介绍COINS索引和搜索方法用于因特网搜索和文件下载的实际系统。以下结合COINS索引和搜索过程介绍了两种方法和系统。一个是针对二进制内容的基于COINS的搜索引擎,另一个是可优化内容传递的基于COINS的下载引擎。
COINS搜索引擎二进制搜索引擎提供搜索二进制文件例如可执行文件和多媒体文件的服务,不仅可以从因特网搜索,还可以从P2SP网络搜索。此处使用的术语“P2SP”指端对服务器和端计算方法。换言之,与其他的P2P网络相比,P2SP网络包括有服务器也包括有对等机。以下是对COINS搜索引擎如何工作以及如何利用COINS的不同部分建立该搜索引擎的详细描述。
1)搜索前,先通过搜索蜘蛛和终端用户的日常使用建立包括有URI索引图和语境索引映射图的COINS索引数据库。
2)搜索过程中,基于关键字分割策略分析用户的输入,以便生成有意义的一组关键字。
3)针对每个关键字,搜索该语境映射图以获取一组(C)。此步中使用的语境映射图是在COINS索引过程中生成的第二映射关键字i→{(C1)*次数1,…,(Ci)*次数i}4)根据次数信息对该组(C)进行排序。
5)针对步骤3中得到的每个(C),从在COINS索引过程中生成的第一映射图中导出一组源(F){(F1),…,(Fi)})→(C)→{关键字1*次数1,…,关键字i*次数i}6)在步骤5中得到的(F)上执行COINS搜索,以获得一组最终的(F)。
COINS下载引擎下载引擎引入了P2SP的概念。如果可从多个源下载某一内容,便可以明显地提高数据获取速度(通过并行地从多个计算较快的源获取数据的各个部分)以及数据访问的稳定性(通过避免网络忙和某些时候的无效链接)。所述源可以是因特网服务器或对等机或两者都有。
执行该操作的关键是获得用于获取数据的目标因特网服务器和对等机的列表。这可以通过COINS解决。
内容传递推论当尝试从因特网获取任何(F)时,内容传递系统可通过COINS智能地选择除了提供该(F)的原始源之外的任何源来下载(F),因为已经确定位于这些源的内容是相同的,这是由相同的内容签名来保证的。
以下是对COINS下载引擎如何工作的描述
1)在终端用户的机器内安装客户端软件。
2)下载前或下载过程中,建立COINS URI索引图。
3)客户端发送下载目标二进制文件的下载请求给服务器,由服务器使用COINS搜索能提供将要下载的内容的源。一组因特网服务器和对等机以URL的形式被返回,尽管该URL可能具有不同的因特网协议、不同的路径和不同的文件名,但它们都能提供将要下载的内容。在COINS搜索索引图数据库的过程中,在索引数据库中查找目标二进制文件。如果数据库中已包括有该目标二进制文件的文件URI,则将该目标二进制文件的内容签名链接至所述搜索查询。如果数据库中未含有该目标二进制文件的文件URI,则计算该目标二进制文件的内容签名并存储在数据库中。这一内容签名用于链接至数据库中具有相同内容签名的其他文件URI。
4)客户端继续以并行地方式从不同的源下载文件的各个部分,该不同的源包括不同的服务器和不同的对等机。成功下载后,客户端将数据的各个部分结合成一个文件。
5)客户端通过比较从刚下载的数据中计算出的内容签名与存储在服务器中的内容签名来执行文件完整性验证。如果内容签名相同,则下载结束。
6)如果在上一步中内容签名不匹配,客户端需要有效地识别出被破坏的片段。一个解决方法是循序地比较已下载的数据与存储在服务器内的数据的片段ID。然而,这一方法对于容量大的文件来说占用的资源相当大。例如,假设每个片段为256K且每个片段ID为20字节,1GB的游戏文件将有4000个片段ID,这样的话,4000次的片段ID比较将产生服务器内的80K带宽占用。相反,以下将介绍一种计算有效的方法,称为“在下载引擎内使用内容签名的有限分治算法(The limited Divide-and-Conquer Algorithms with ContentSignature in Downloading Engine)”。
该算法将片段ID分割成两部分A和B,并使用相同的内容签名计算方法计算每一部分的签名。然后在客户端和服务器之间比较签名A和B。如果签名A匹配,则表示A部分下载正确。但是如果不匹配,则将A部分再分割成两部分,并重复上述处理。
如果被破坏的片段数量大且随机的分布在一个文件内,则使用上述分治算法的代价也很大。因此,本方法设置可以查找的最大深度。例如,最大为3的深度只需要7次ID比较,在服务器内占用140字节的带宽,便可以找出任何被破坏的部分。这种情况下,每个部分是该文件的1/8。
7)客户端设法下载被破坏的部分,该部分的签名需要在下载后进行校验。
为了更好的理解下载引擎应用,分析以下给出的一例子假设Red Hat Linux发布其9.1版本的操作系统后,许多内容(镜像)站点都存储有该新版本操作系统的副本,以便服务其成员。同时,多个Linux终端用户开始设法(快速)下载。接近100MB的下载使得一些知名站点变得混乱,导致服务器极度繁忙,因此出现终端用户全球等待的现象。
作为示例,图5中由网络爬虫或搜索蜘蛛程序建立的索引图显示,标识为(FL)的待下载的Linux新版本实际上可从标识为(FL)、(F3)和(F7)的三个服务器源以及标识为(F12)的一个对等源获得。
源的实际格式可根据不同的实现而不同。此处,服务器源定义为(FL)为http//www.redhatlinux.com/releases/download/linux9-2-l.zip(F3)为ftp//218.105.114.2543044/pub/software/topl0/linux9-2-l.zip(F7)为ftp//219.101.18.20/pub/linux/linux-latest.Zip同样,在一对等机上的该源定义为jxta//uri-334/linux-latest-9-2-l.zip。
请注意,(FL)和(F3)具有相同的文件名linux9-2-l.zip,而(F7)和(F12)具有不同的文件名。但是,由于他们的内容签名相同,他们都指向相同的文件。
结果,根据这种设计建立的下载应用程序可选择从不止一个源中获取该新发布的Linux操作系统软件的各个部分。实际上,这一下载策略将服务器带宽的瓶颈转移至下载客户端。此外,服务器单点传输失败的情况下(因服务器忙或与该服务器的连接很差),客户端仍然可从其他源获取该软件。
简而言之,上述的智能和自动路由使用核心索引图,并且该过程对终端用户来说是透明的。可以建立全局负载平衡器来有效地减少任何内容服务器在遇到无法预料或预料之中的流量拥塞时传输失败的可能性。
本申请中引用的所有专利、公开物、网站内容和其他资料和文件,无论是印刷或电子格式,都作为本申请的一部分。
以上对本发明的具体实施例的描述仅出于解释和说明的目的,不是将本发明穷尽或限制为上述公开的具体形式。根据上述内容的教导,还可以做出各种修改和变更。可知,本发明的范围不受这些具体描述的限制,而由本申请的权利要求来限定。上述说明、示例和数据提供了对实施本发明的完整描述。由于还可以对本发明提出各种实施例而不脱离本发明的精神和范围,因此本发明的范围取决于权利要求及其等效替换。
权利要求
1.一种生成二进制文件索引图数据库的方法,其特征在于,包括如下步骤a)获取目标二进制文件列表,其内包含有目标二进制文件的主要识别信息;b)使用合适的算法计算所述二进制文件的内容签名;c)存储所述内容签名及与所述内容签名对应之文件的识别信息,从而组成所述二进制文件的索引图数据库。
2.根据权利要求1所述的方法,其特征在于,进一步包括如下步骤a)识别与多个二进制文件相关的关键字,所述多个二进制文件具有相同的文件内容签名;b)将所述多个关键字合并为关键字集合,从而将所述文件内容签名与所述关键字集合相关联。
3.根据权利要求2所述的方法,其特征在于,进一步包括对所述关键字集合内的关键字进行排序,使得具有最高出现频率的关键字首先与所述文件内容签名相关联。
4.根据权利要求1所述的方法,其特征在于,所述文件的识别信息包括主要识别信息和次要识别信息。
5.根据权利要求4所述的方法,其特征在于,所述文件的主要识别信息包括页面URI和文件URI。
6.根据权利要求4所述的方法,其特征在于,所述文件的次要识别信息包括锚文本、描述文本、文件大小和文件协议。
7.根据权利要求5所述的方法,其特征在于,所述页面URI为页面URL,且所述文件URI为文件URL。
8.根据权利要求1所述的方法,其特征在于,所述用于计算内容签名的算法包括SHA-1算法。
9.根据权利要求1所述的方法,其特征在于,在所述子步骤c)中,所述内容签名及识别信息存储在多个计算机上。
10.根据权利要求9所述的方法,其特征在于,所述多个计算机包括一个或多个中心服务器计算机和客户端计算机。
11.一种搜索因特网上的二进制文件的方法,其特征在于,包括如下步骤a)接收来自发起源的针对目标二进制文件的搜索查询;b)在索引图数据库中找出多个内容签名,所述多个内容签名链接至多个二进制文件,并链接至描述所述多个二进制文件的多个关键字和文件识别信息;c)将与所述搜索查询相关的所述多个二进制文件呈现给所述发起源。
12.根据权利要求11所述的方法,其特征在于,所述搜索查询是搜索关键字或文件URI。
13.根据权利要求11所述的方法,其特征在于,进一步包括计算所述目标二进制文件的内容签名的步骤。
14.根据权利要求11所述的方法,其特征在于,所述步骤b)包括如下步骤a)链接所述目标二进制文件与多个包含有所述目标二进制文件的页面URI;b)链接所述多个页面URI中的每个页面URI与多个文件URI。
15.根据权利要求11所述的方法,其特征在于,所述步骤b)包括如下步骤a)链接所述目标二进制文件与多个包含有所述目标二进制文件的页面URI;b)链接所述多个页面URI中的每个页面URI与多个文件URI;c)重复所述步骤a)和步骤b)直至遇到中止条件。
16.根据权利要求15所述的方法,其特征在于,所述中止条件包括从以下条件组选择出的任一中止条件a)遍历索引图数据库的深度数;b)所收集文件的总数;c)遍历索引图数据库的超时;d)访问的页面数。
17.根据权利要求11所述的方法,其特征在于,所述发起源为终端用户传入的输入。
18.根据权利要求11所述的方法,其特征在于,所述发起源为计算机生成的命令。
19.根据权利要求11所述的方法,其特征在于,所述步骤c)进一步包括根据多个预定因素对所述多个二进制文件排序的步骤。
20.根据权利要求19所述的方法,其特征在于,所述预定因素包括文件内容相关性或文件加权平均值。
21.根据权利要求20所述的方法,其特征在于,所述文件的文件加权平均值包括至少以下一种文件平均下载速度、文件下载次数、可用源的数量或文件大小。
22.根据权利要求20所述的方法,其特征在于,所述文件内容相关性包括至少以下一种文件的访问次数、引用次数或文件类型。
23.一种生成文件内容签名的方法,其特征在于,包括如下步骤a)将所述文件分割为大小合适的多个片段;b)使用合适的算法计算所述片段的内容签名,从而获得多个片段内容签名;c)基于所述多个片段内容签名生成所述文件内容签名。
24.根据权利要求23所述的方法,其特征在于,所述步骤c)包括通过链接所述多个片段内容签名来生成所述文件内容签名。
25.根据权利要求23所述的方法,其特征在于,所述步骤c)包括通过使用合适的算法计算所述多个片段内容签名来生成所述文件内容签名,从而获得所述文件内容签名。
26.一种生成文件内容签名的方法,其特征在于,包括如下步骤a)将所述文件分割为大小合适的多个片段;b)从每个片段中提取多个样本;c)使用合适的算法、利用所述片段的多个样本来计算所述每个片段的内容签名,从而获得多个片段内容签名;d)基于所述多个片段内容签名生成所述文件内容签名。
27.根据权利要求23[LQ1]所述的方法,其特征在于,所述步骤d)包括通过链接所述多个片段内容签名来生成所述文件内容签名。
28.根据权利要求23[LQ2]所述的方法,其特征在于,所述步骤d)包括通过使用合适的算法计算所述多个片段内容签名来生成所述文件内容签名,从而获得所述文件内容签名。
29.根据权利要求23所述的方法,其特征在于,所述片段的大小不大于256K。
30.根据权利要求23所述的方法,其特征在于,所述合适的算法为SHA-1。
31.根据权利要求26所述的方法,其特征在于,所述样本包括所述文件[mx3]的开始部分和结尾部分。
32.根据权利要求26所述的方法,其特征在于,所述样本包括所述文件[mx4]的开始部分或结尾部分。
33.一种下载目标二进制文件的方法,其特征在于,包括如下步骤a)生成索引图数据库,其中包含有多个二进制文件的文件识别信息,以及使用合适算法计算出的与所述多个二进制文件对应的文件内容签名;b)接收来自发起源的针对目标二进制文件的下载查询,其中所述目标二进制文件在所述索引图数据库内链接至对应的内容签名,且所述对应的内容签名链接至多个具有相同内容签名的二进制文件URL;c)从所述多个文件URL下载所述目标二进制文件的多个[mx5]部分;d)在发起源的机器内整合所述目标二进制文件的所述多个部分,以获得完整的目标二进制文件。
34.根据权利要求33所述的方法,其特征在于,所述下载查询是关键字或文件URI。
35.根据权利要求33所述的方法,其特征在于,进一步包括验证所述下载的目标二进制文件的完整性的步骤。
36.根据权利要求35所述的方法,其特征在于,进一步包括再下载和恢复所述已下载的目标二进制文件中的错误部分的步骤。
37.一种生成二进制文件索引图数据库的系统,其特征在于,包括a)获取目标二进制文件列表的装置,所述列表内包含有目标二进制的主要识别信息;b)使用合适的算法计算所述二进制文件的内容签名的装置;c)存储所述内容签名及与所述内容签名对应之文件的识别信息,从而组成所述二进制文件索引图数据库的装置。
38.根据权利要求36[LQ6]所述的系统,其特征在于,进一步包括识别与多个二进制文件相关的关键字的装置,所述多个二进制文件具有相同的文件内容签名;以及将所述多个关键字合并为关键字集合的装置,从而将所述文件内容签名与所述关键字集合相关联。
39.根据权利要求37所述的系统,其特征在于,进一步包括对所述关键字集合内的关键字进行排序的装置,使得具有最高出现频率的关键字首先与所述文件内容签名相关联。
40.一种搜索因特网上的二进制文件的系统,其特征在于,包括a)接收来自发起源的针对目标二进制文件的搜索查询的装置;b)在索引图数据库中找出多个内容签名的装置,所述多个内容签名链接至多个二进制文件,并链接至描述所述多个二进制文件的多个关键字和文件识别信息;c)将与所述搜索查询相关的所述多个二进制文件呈现给所述发起源的装置。
41.一种生成文件内容签名的系统,其特征在于,包括a)将所述文件分割为大小合适的多个片段的装置;b)使用合适的算法计算所述片段的内容签名从而获得多个片段内容签名的装置;c)基于所述多个片段内容签名生成所述文件内容签名的装置。
42.一种生成文件内容签名的系统,其特征在于,包括a)将所述文件分割为大小合适的多个片段的装置;b)从每个片段中提取多个样本的装置;c)使用合适的算法利用所述片段的多个样本来计算所述每个片段的内容签名从而获得多个片段内容签名的装置;d)基于所述多个片段内容签名生成所述文件内容签名的装置。
43.一种下载目标二进制文件的系统,其特征在于,包括a)生成索引图数据库的装置,所述索引图数据库包含有多个二进制文件的文件识别信息以及使用合适算法计算出的与所述多个二进制文件对应的文件内容签名;b)接收来自发起源的针对目标二进制文件的下载查询的装置,其中所述目标二进制文件在所述索引图数据库内链接至对应的内容签名,且所述对应的内容签名链接至多个具有相同内容签名的二进制文件URL;c)从所述多个文件URL下载所述目标二进制文件的多个部分的装置;d)在发起源的机器内整合所述目标二进制文件的所述多个部分以获得完整的目标二进制文件的装置。
44.根据权利要求43所述的系统,其特征在于,进一步包括验证所述下载的目标二进制文件的完整性的装置。
45.根据权利要求44所述的系统,其特征在于,进一步包括恢复所述已下载的目标二进制文件中的错误部分的装置。
46.一种计算机可读介质,其内存储有使至少一个处理器执行如下步骤的指令a)获取目标二进制文件列表,其内包含有目标二进制的主要识别信息;b)使用合适的算法计算所述二进制文件的内容签名;c)存储所述内容签名及与所述内容签名对应之文件的识别信息,从而组成所述二进制文件索引图数据库。
47.根据权利要求46所述的计算机可读介质,其内存储有使至少一个处理器执行如下步骤的额外指令a)识别与多个二进制文件相关的关键字,所述多个二进制文件具有相同的文件内容签名;b)将所述多个关键字合并为关键字集合,从而将所述文件内容签名与所述关键字集合相关联。
48.一种计算机可读介质,其内存储有使至少一个处理器执行如下步骤的指令a)接收来自发起源的针对目标二进制文件的搜索查询;b)在索引图数据库中找出多个内容签名的位置,所述多个内容签名链接至多个二进制文件,并链接至描述所述多个二进制文件的多个关键字和文件识别信息;c)将与所述搜索查询相关的所述多个二进制文件呈现给所述发起源。
49.根据权利要求48所述的计算机可读介质,其内存储有使至少一个处理器执行如下步骤的额外指令a)链接所述目标二进制文件与多个包含有所述目标二进制文件的页面URI;b)链接所述多个页面URI中的每个页面URI与多个文件URI。
50.根据权利要求48所述的计算机可读介质,其内存储有使至少一个处理器执行如下步骤的额外指令a)链接所述目标二进制文件与多个包含有所述目标二进制文件的页面URI;b)链接所述多个页面URI中的每个页面URI与多个文件URI;c)重复所述步骤a)和步骤b)直至遇到中止条件。
51.一种计算机可读介质,其内存储有使至少一个处理器执行如下步骤的指令a)将所述文件分割为大小合适的多个片段;b)使用合适的算法计算所述片段的内容签名,从而获得多个片段内容签名;c)基于所述多个片段内容签名生成所述文件内容签名。
52.一种计算机可读介质,其内存储有使至少一个处理器执行如下步骤的指令a)将所述文件分割为大小合适的多个片段;b)从每个片段中提取多个样本;c)使用合适的算法利用所述片段的多个样本来计算所述每个片段的内容签名,从而获得多个片段内容签名;d)基于所述多个片段内容签名生成所述文件内容签名。
53.一种计算机可读介质,其内存储有使至少一个处理器执行如下步骤的指令a)生成索引图数据库,所述索引图数据库包含有多个二进制文件的文件识别信息以及使用合适算法计算出的与所述多个二进制文件对应的文件内容签名;b)接收来自发起源的针对目标二进制文件的下载查询,其中所述目标二进制文件在所述索引图数据库内链接至对应的内容签名,且所述对应的内容签名链接至多个具有相同内容签名的二进制文件URL;c)从所述多个文件URL下载所述目标二进制文件的多个部分;d)在发起源的机器内整合所述目标二进制文件的所述多个部分以获得完整的目标二进制文件。
54.根据权利要求53所述的计算机可读介质,其内存储的额外的指令使至少一个处理器执行验证所述下载的目标二进制文件的完整性的步骤。
55.根据权利要求54所述的方法,进一步包括再下载和恢复所述已下载的目标二进制文件中的错误部分的步骤。[LQ7]
全文摘要
本发明公开了一种索引和搜索(102)二进制文件领域内的新的解决方法,所述二进制文件包括来自公共因特网(104)的各种二进制文件例如多媒体文件,包括图片文件、MP3文件和其他音频/视频文件。本发明介绍了一种根据其内容签名索引二进制文件例如多媒体文件的方法,所述内容签名唯一地标识所述二进制文件,以及通过遍历在索引阶段(101)建立的索引图数据库来搜索相关的文件的方法。本发明可用于搜索引擎和下载引擎(105),也可与基于文本的索引和搜索技术结合使用。结果,这种扩展使用会使多媒体文件的语境扩大,并增加了描述该语境的关键字的相关精确性。
文档编号G06F17/30GK1890662SQ200480034199
公开日2007年1月3日 申请日期2004年9月29日 优先权日2003年9月29日
发明者邹胜龙, 胥明 申请人:千兆科技(深圳)有限公司