用于搜索引擎索引的混合分布模型的制作方法

文档序号:6438976阅读:243来源:国知局
专利名称:用于搜索引擎索引的混合分布模型的制作方法
用于搜索引擎索引的混合分布模型
背景技术
可以在因特网上获得的信息和内容的数量持续快速增多。在海量信息的情况下, 已经开发出搜索引擎以便于搜索电子文档。具体来说,用户可以通过输入包括其可能感兴趣的一项或更多项的搜索查询来搜索信息和文档。在接收到来自用户的搜索查询之后,搜索引擎基于搜索查询识别出相关的文档和/或网页。由于其实用性,web搜索(即针对用户发出的搜索查询找到相关的网页和文档的处理)可证明地已经成为当今因特网上的其中一项最为普及的服务。此外,搜索引擎通常使用一步处理,其基于所接收到的搜索查询利用搜索索引识别出相关文档以便返回给用户。但是搜索引擎排序功能已经变成非常复杂的功能,如果其被用于所索引的每一个文档的话可能不仅费时而且代价高昂。此外,对于这些复杂的公式所需要的数据存储也可以会带来问题,特别当以通常由单词或短语索引的倒排索引存储时尤其如此。当以倒排索引存储时,提取对于复杂公式所需的相关数据的效率很低。

发明内容
提供本概要是为了以简化形式介绍所选概念,下面在具体实施部分中将对其进行进一步的描述。本概要不意图标识所要求保护的主题内容的关键特征或实质特征,也不意图被用来帮助确定所要求保护的主题内容的范围。本发明的实施例涉及在相同的节点集合上采用原子碎片化(sharded)和文档碎片化分布二者,从而使得每一个节点或机器存储倒排索引的一部分(其例如由原子碎片化)和正排索引的一部分(其例如由文档碎片化)。可以为片段指定其所负责的文档群组。所述文档群组由原子和文档二者索引,从而存在与该文档群组相关联的倒排索引和正排索引。每一个片段包括多个节点,并且可以为每一个节点指定倒排和正排索引二者的不同部分。此外,每一个节点负责利用存储在其上的倒排和正排索引部分二者执行多项排序计算。举例来说,初步排序处理可以利用倒排索引,并且最终排序处理可以利用正排索引。这些排序处理形成被采用来基于所接收到的搜索查询识别最具相关性的文档的总体排序处理。


下面将参照附图详细描述本发明,其中
图1是适用于实施本发明的实施例的示例性计算环境的方框图; 图2是可以在其中采用本发明的实施例的示例性系统的方框图; 图3是根据本发明的实施例的混合分布系统的示例图; 图4是根据本发明的实施例的示出了有效载荷要求的混合分布系统的示例图; 图5是示出了根据本发明的实施例的用于根据搜索查询利用混合分布系统来识别相关文档的方法的流程图6是示出了根据本发明的实施例的用于为多处理文档检索系统生成混合分布系统的方法的流程图;以及图7是示出了根据本发明的实施例的用于根据搜索查询利用混合分布系统来识别相关文档的方法的流程图。
具体实施例方式在这里将详细描述本发明的主题内容以满足法定要求。但是这里的描述本身不意图限制本专利的范围。相反,本发明的发明人已经设想到还可以按照其他方式来具体实现所要求保护的主题内容,以便与其他的现有或未来技术相结合地包括与本文献中所描述的类似的不同步骤或步骤组合。此外,虽然在这里可以使用术语“步骤”和/或“方框”来指代所采用的方法的不同元素,但是除非明确地描述各个单独步骤的顺序,否则所述术语不应被解释为意味着这里所公开的各个步骤当中或之间的任何特定顺序。如前所述,本发明的实施例提供形成片段的各个节点以便分别存储用于该片段的倒排索引和正排索引的一部分。举例来说,在将要索引的文档总量(例如一万亿)当中,可以为每一个片段分配特定文档部分,从而使得该片段负责对这些文档进行索引并且执行排序计算。存储在该特定片段上的倒排索引和正排索引的所述部分是关于被指定给该片段的文档的完整倒排和正排索引。每一个片段由多个节点构成,所述节点实质上是具有存储能力的机器或计算设备。为片段中的每一个节点指定倒排索引和正排索引的独立部分,从而使得可以采用每一个节点来执行各种排序计算。因此,每一个节点已经在其上存储所述片段的倒排索引和正排索引的子集,并且负责在该片段内的各种排序处理中访问其中的每一项。举例来说,总体排序处理可以包括匹配阶段、初步排序阶段和最终排序阶段。匹配/初步阶段可能需要采用其倒排索引对来自搜索查询的特定原子进行了索引的那些节点来识别与搜索查询相关的第一文档集合。第一文档集合是来自被分配给所述片段的文档的文档集合。随后可以采用其正排索引对与第一文档集合中的某一文档相关联的文档标识进行了索引的那些节点来识别与搜索查询相关性更高的第二文档集合。在一个实施例中,第二文档集合是第一文档集合的子集。这一总体处理可以被采用来把文档集合限制到被发现具有相关性的那些文档,从而采用通常比初步排序处理更加耗时并且成本更高的最终排序处理来对与不管相关与否都对索引中的每一个文档进行排序的情况相比较少的文档进行排序。相应地,在一个方面,本发明的一个实施例是针对存储计算机可用指令的一种或更多种计算机存储介质,当由计算设备使用时,所述计算机可用指令使得计算设备执行一种基于搜索查询利用混合分布系统来识别相关文档的方法。所述方法包括为片段分配文档群组,所述文档群组在倒排索引中由原子索引并且在正排索引中由文档索引;以及在形成所述片段的多个节点当中的每一个节点上存储倒排索引和正排索引的不同部分。此外, 所述方法还包括访问存储在第一节点集合当中的每一个节点上的倒排索引部分,以便识别与搜索查询相关的第一文档集合。所述方法附加地还包括基于与第一文档集合相关联的文档标识,访问存储在第二节点集合当中的每一个节点上的正排索引部分,以便把第一文档集合中的相关文档的数量限制到第二文档集合。在另一个实施例中,本发明的一方面是针对存储计算机可用指令的一种或更多种计算机存储介质,当由计算设备使用时,所述计算机可用指令使得计算设备执行一种为多处理文档检索系统生成混合分布系统的方法。所述方法包括接收关于被指定给片段的文档群组的指示,所述片段包括多个节点。对于所述片段,所述方法还包括通过原子索引所分配的文档群组以便生成倒排索引,并且通过文档索引所分配的文档群组以便生成正排索引。所述方法附加地还包括将倒排索引的一部分和正排索引的一部分指定给形成所述片段的多个节点当中的每一个,从而使得所述多个节点当中的每一个存储正排索引的不同部分和倒排索引的不同部分。本发明的另一个实施例是针对存储计算机可用指令的一种或更多种计算机存储介质,当由计算设备使用时,所述计算机可用指令使得计算设备执行一种基于搜索查询利用混合分布系统来识别相关文档的方法。所述方法包括接收搜索查询;识别搜索查询中的一个或更多原子;以及向分别被指定由原子和文档二者索引的文档群组的多个片段传送所述一个或更多原子,从而使得在所述多个片段当中的每一个片段处生成并存储倒排索引和正排索引。所述多个片段当中的每一个由多个节点构成,所述节点分别被指定正排索引和倒排索引的一部分。基于所述一个或更多原子,所述方法在第一片段处识别出其倒排索引部分包含来自搜索查询的所述一个或更多原子当中的至少一个的第一节点集合。此外, 所述方法还包括访问存储在第一节点集合当中的每一个节点处的倒排索引部分,以便识别出被发现与所述一个或更多原子相关的第一文档集合;以及基于与第一文档集合相关联的文档标识,识别出其正排索引部分包含与第一文档集合相关联的其中一个或更多文档标识的第二节点集合。所述方法还包括访问存储在第二节点集合当中的每一个节点处的正排索引部分,以便识别出作为第一文档集合的子集的第二文档集合。在简要描述了本发明的实施例的总览之后,下面将描述可以在其中实施本发明的实施例的示例性操作环境,以便提供对应于本发明的各个方面的一般情境。首先特别参照图1,其中用于实施本发明的实施例的示例性操作环境被示出并且总体上标记为计算设备 100。计算设备100仅仅是适当的计算环境的一个示例,其不意图暗指对于本发明的使用范围或功能的任何限制。计算设备100也不应当被解释为具有与所示出的任一个组件或组件组合有关的任何依赖性或要求。可以在计算机代码或机器可用指令的一般情境中描述本发明,其中包括诸如程序模块之类的计算机可执行指令,其由计算机或其他机器执行,比如个人数字助理或其他手持式设备。一般来说,包括例程、程序、对象、组件、数据结构等等的程序模块指代执行特定任务或者实施特定抽象数据类型的代码。可以在多种系统配置中实践本发明,其中包括手持式设备、消费电子设备、通用计算机、更加专业的计算设备等等。还可以在分布式计算环境中实践本发明,其中各项任务由通过通信网络链接的远程处理设备执行。参照图1,计算设备100包括直接或间接地耦合以下设备的总线110 存储器112、 一个或更多处理器114、一个或更多呈现组件116、输入/输出(I/O)端口 118、输入/输出组件120以及说明性电源122。总线110代表一种或更多种总线(比如地址总线、数据总线或其组合)。虽然图1的各个方框出于简单起见是用线条示出的,但是在实际情况中各个组件的边界并不是如此明确的,并且比方来说所述线条更准确地将是灰色且模糊的。举例来说,可以把诸如显示设备之类的呈现组件视为I/O组件。此外,处理器具有存储器。本发明的发明人认识到这正是本领域的性质,并且重申图1的图示仅仅是为了说明可以结合本发明的一个或更多实施例使用的示例性计算设备。在诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”等等之间不做区分,这是因为所有这些都被设想在图1的范围内并且被称作“计算设备”。
计算设备100通常包括多种计算机可读介质。计算机可读介质可以是能够由计算机设备100访问的任何可用介质,其包括易失性和非易失性介质、可移除和不可移除介质。 作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括在用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术中所实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括(但不限于)RAM、ROM、EEPR0M、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储设备或者可以被用来存储所期望的信息并且可以由计算设备100访问的任何其他介质。通信介质通常在诸如载波之类的已调数据信号或其他传输机制中具体实现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息递送介质。术语“已调数据信号”是指其一项或更多项特性被设定或改变来在其中编码信息的信号。作为示例而非限制,通信介质包括诸如有线网络或直接布线连接之类的有线介质,以及诸如声学、RF、红外和其他无线介质之类的无线介质。任何前述内容的各种组合也应当被包括在计算机可读介质的范围内。存储器112包括具有易失性和/或非易失性存储器的形式的计算机存储介质。所述存储器可以是可移除的、不可移除的或者其组合。示例性的硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等等。计算设备100包括从诸如存储器112或者I/O组件120之类的各种实体读取数据的一个或更多处理器。(多个)呈现组件116向用户或其他设备呈现数据指示。示例性的呈现组件包括显示设备、扬声器、打印组件、振动组件等等。I/O端口 118允许计算设备100逻辑地耦合到包括I/O组件120在内的其他设备, 其中一些可以是内建的。说明性组件包括麦克风、操纵杆、游戏手柄、碟形卫星天线、扫描仪、打印机、无线设备等等。现在参照图2,该图提供了示出可以在其中采用本发明的实施例的示例性系统 200的方框图。应当理解的是,这里所描述的该种设置和其他设置仅仅是作为示例来阐述的。作为所示设置和元件的补充或替换可以使用其他设置和元件(例如机器、接口、功能、顺序以及功能分组等等),并且可以完全省略某些元件。此外,这里所描述的许多元件是可以被实施为分立或分布式组件或者结合其他组件实施并且以任何适当组合和位置实施的功能实体。在这里被描述为由一个或更多实体执行的各项功能可以由硬件、固件和/或软件实施。举例来说,各项功能可以由执行存储在存储器中的指令的处理器实施。在未示出的其他组件当中,系统200包括用户设备202、片段204以及混合分布系统服务器206。图2中所示的每一个组件可以是任何类型的计算设备,比如例如参照图1描述的计算设备100。各个组件可以通过网络208彼此通信,所述网络可以包括(而不限于) 一个或更多局域网(LAN)和/或广域网(WAN)。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。应当理解的是,在本发明的范围内,在系统200内可以采用任意数目的用户设备、片段以及混合分布系统服务器。其中的每一项可以包括单个设备或者在分布式环境中协作的多个设备。举例来说,所述片段可以包括设置在分布式环境中的多个设备,其共同提供这里所描述的片段204的功能。此外,在系统200内还可以包括未示出的其他组件,而在某些实施例中则可以省略图2中所示的组件。用户设备202可以是由可以访问网络208的末端用户所拥有和/或操作的任何类型的计算设备。举例来说,用户设备202可以是台式计算机、膝上型计算机、平板计算机、移动设备或者具有网络接入的任何其他设备。一般来说,末端用户可以特别采用用户设备202 来通过向搜索引擎提交搜索查询而访问电子文档。举例来说,末端用户可以采用用户设备 202上的web浏览器来访问并查看存储在系统中的电子文档。片段204通常包括多个节点,其也被称作叶片。在图2中示出了两个节点,其中包括编号为210的节点1和编号为212的节点2。虽然在图2的实施例中示出了两个节点, 但是各个片段可以包括远多于两个节点(例如10、40、100个)。两个节点仅仅是出于示例性的目的而示出的。每一个片段(比如片段204)被分配其所负责的文档群组。这样,在片段 204处生成并存储倒排索引和正排索引。虽然可以在片段204本身处生成用于该特定片段的倒排索引和正排索引,但是在一个替换实施例中,可以在某一其他位置处或者在某一其他计算设备上生成所述索引并且将其发送到片段204。此外,一旦基于被分配给片段204的文档群组生成倒排索引和正排索引,就把全部两项索引分成各个部分。在一个实施例中,所述部分的数目等于与特定片段相关联的节点的数目。因此,在特定片段中有40个节点的情况下,全部两项索引都被分成40个部分,从而使得每一个节点负责倒排索引和正排索引当中的每一项的不同部分。如图所示,节点1具有倒排索引部分214和正排索引部分216。节点2也具有倒排索引部分218和正排索引部分220。虽然被显示为与节点分开,但是在一个实施例中,所述索引被存储在节点本身之上。在任何情况下,每一个节点都负责基于被指定给该片段的文档群组而被索引的倒排索引和正排索引的一部分。如前所述,索引可以通过原子来索引或碎片化(倒排索引)或者通过文档来碎片化 (正排索引)。这里所使用的碎片化(sharding)指的是通过原子或文档对文档集合进行索引的处理。单独利用每一种方法而不利用另一种有其优点和缺点。举例来说,当通过文档碎片化时,优点包括各个碎片之间的处理隔离,从而只需要合并结果即可。此外,每文档的信息很容易与匹配对准。另外,网络通信量较小。与此相对,缺点包括需要每一个碎片来处理任何特定查询。如果将倒排索引数据放置在一张盘上,则对于N个碎片上的K原子查询需要最少O(KN)次盘寻找。当通过原子碎片化时,优点包括减少了计算,从而只需要K个碎片来处理K原子查询。如果将倒排索引数据放置在一张盘上,则对于K原子查询需要O(K)次盘寻找。但是与此相对,缺点包括需要连接的处理,从而存储参与查询的原子的所有碎片都需要合作。除了每文档的信息不容易管理之外,网络通信量也很大。本发明的实施例与传统方法相比需要对每文档数据的较少管理。造成这一结果的原因包括预先计算了一些分数并且在诸如倒排索引的索引中进行评分,并且对于文档的进一步细化和过滤也在匹配阶段 (LO)之后发生。因此,在对于每文档数据的管理方面,前面所描述的缺点被大大减少。此外,特定片段中的每一个节点都能够执行各种功能,包括允许识别相关搜索结果的排序功能。在一些实施例中,搜索引擎可以采用分级处理来选择用于搜索查询的搜索结果。在这里,每一个节点可以能够采用总体排序处理的多个级。下面将描述一个示例性排序处理,但是其仅仅是可以由每一个节点采用的排序处理的一个示例。当接收到搜索查询时可以执行总体排序处理,以便把匹配文档的数量减少到可管理的大小。当接收到搜索查询时,对搜索查询进行分析以便识别出原子。随后可以在总体排序处理的各级期间使用所述原子。这些级可以被称作LO级(匹配级),其用来查询搜索索引并且识别出包含来自搜索查询的原子的初始匹配文档集合。这一初始处理可以把来自搜索索引中所索引的所有文档的候选文档的数目减少到与来自搜索查询的原子相匹配的那些文档。举例来说,搜索引
8擎可能搜索成百万或者甚至成万亿的文档以确定与特定搜索查询最具相关性的文档。一旦 LO匹配级完成之后,候选文档的数目就大大减少。但是用于找到最具相关性的文档的许多算法都耗时并且成本高。因此,可以采用两个其他级,其中包括初步排序级和最终排序级
初步排序级也被称作Ll级,其采用简化评分功能,所述简化评分功能被用来为从前面所描述的LO匹配级保留下来的候选文档计算初步分数或排序。因此初步排序组件210负责为从LO匹配级保留下来的每一个候选文档提供初步排序。可替代地,可以为候选文档评分,从而给出绝对数字而不是排序。与最终排序级相比,初步排序级被简化,这是因为其仅仅采用由最终排序级所使用的排序特征的子集。举例来说,在最终排序级中所使用的其中一项或更多项(但是在一些实施例中并非所有的)排序特征被初步排序级所采用。此外,最终排序级没有采用的特征也可以被初步排序级所采用。在本发明的实施例中,初步排序级所使用的排序特征没有原子相依性,比如项目接近性和项目共生性。仅仅出于示例性目的, 在初步排序级中所使用的排序特征例如可以包括静态特征和动态原子隔离分量。静态特征通常是仅仅关注独立于查询的特征的那些分量。静态特征的示例包括页面排序、特定网页的垃圾信息评定等等。动态原子隔离分量是每次仅仅关注与单个原子有关的特征的分量。 示例可以包括例如BM25f、特定原子在文档中的频率、原子在文档中的位置(情境)(例如标题、URL、锚点、标题、主体、流量、分类、属性)等等。一旦通过初步排序级再次减少候选文档的数目,最终排序级(其也被称作L2级)就对由初步排序级为之提供的候选文档进行排序。与用在初步排序级中的排序特征相比,结合最终排序级使用的算法是具有数目更多的排序特征的更加昂贵的操作。但是最终排序算法被应用于数目少得多的候选文档。最终排序级算法提供已排序文档集合,并且根据所述已排序文档集合响应于原始搜索查询而提供搜索结果。在一些实施例中,这里所描述的最终排序级可以采用正排索引。回到图2,混合分布系统服务器206由文档分配组件222、查询解析组件224、查询分布组件2 和结果合并组件2 构成。文档分配组件222通常负责向被用在给定排序系统中的各个片段分配文档。仅仅出于示例性目的,如果需要索引1亿个文档并且有100个片段可用,则可以为每一个片段分派100万个文档。或者在更大的尺度上,如果需要索引1 万亿个文档并且有10万个片段可用,则可以为每一个片段分派1000万个文档。可以如前面的示例所表明的那样均勻地在各个片段之间分派文档,或者可以按照不同的方式划分, 从而使得每一个片段所负责的文档数目不完全相同。当通过用户设备202上的用户接口接收到搜索查询时,查询解析组件2M例如操作来重新制定所述查询。基于如何在搜索索引中对数据进行索引,将所述查询从其自由文本形式重新制定成便于对诸如倒排索引和正排索引之类的搜索索引进行查询的格式。在各实施例中,对搜索查询的各项进行解析及分析,以便识别出可以被用来查询搜索索引的原子。识别所述原子所使用的技术可以类似于在搜索索引中对文档进行索引时被用来识别文档中的原子的技术。举例来说,可以基于项目统计量和查询分布信息来识别原子。查询解析组件2M可以提供原子联结集合以及这些原子的级联变体。这里所使用的原子或原子单元可以指代查询或文档的多种单元。这些单元例如可以包括项目、n元语法、η元组、k邻近η元组等等。项目向下映射到由所使用的特定令牌化器技术定义的单个符号或单词。在一个实施例中,项目是单个字符。在另一个实施例中,项
9目是单个单词或单词分组。η元语法是可以从文档中提取的由“η”个接连的或几乎接连的项目构成的序列。如果其对应于一系列连续项目则说η元语法是“紧密的”,并且如果其按照各个项目出现在文档中的顺序包含所述项目但是所述项目不一定是接连的,则说η元语法是“松散的”。松散的η元语法通常被用来代表一类等效短语,所述短语只有无关紧要的单词不同(例如“如果下雨我就会变湿”和“如果下雨则我就会变湿”)。这里所使用的η元组是由共同出现(与顺序无关)在文档中的“η”个项目构成的集合。此外,这里所使用的k 邻近η元组指代在文档中的由“ k”个项目构成的窗口内共同出现的由“η ”个项目构成的集合。因此,原子通常被定义为所有上述内容的一般化。本发明的各个实施例的实现方式可以使用不同种类的原子,但是这里所使用的原子通常描述前述各类当中的每一类。查询分布组件2 实质上负责接收所提交的搜索查询并且将其分布在各个片段当中。在一个实施例中,每一项搜索查询被分布到每一个片段,从而使得每一个片段提供初步搜索结果集合。举例来说,当片段接收到搜索查询时,该片段或者该片段内的组件确定将为哪些节点分派利用存储在所述节点上的倒排索引部分执行初步排序功能的任务。在一种情况下,作为第一节点集合的一部分的所选节点是其倒排索引已经索引了从搜索查询中解析出的一个或更多原子的那些节点,正如前面所描述的那样。因此,当重新制定搜索查询时,识别出一个或更多原子并且将其发送到每一个片段。第一节点集合当中的每一个节点基于初步排序功能返回被发现与搜索查询相关的第一文档集合,正如前面简要描述的那样。随后确定第二节点集合。在一个实施例中,这些节点当中的每一个都在其对应的正排索引中存储了第一文档集合当中的至少一个文档。第二节点集合当中的每一个节点利用正排索引数据和其他考虑因素执行最终排序功能,并且作为结果识别出第二文档集合。在一个实施例中,第二集合当中的每一个文档都被包括在第一集合中,因为在最终排序级中使用了与第一文档集合相关联的文档标识。为结果合并组件2 提供来自每一个片段的搜索结果(例如文档标识和摘录),并且从这些结果形成合并的最终搜索结果列表。有多种方式用以形成最终搜索结果列表,其中包括简单地去除任何重复文档并且按照由最终排序确定的顺序将每一个文档放入列表中。在一个实施例中,在每一个片段上都存在类似于结果合并组件2 的组件,从而在该片段处把由每一个节点产生的结果合并到单个列表中,并且随后把所述列表发送到结果合并组件2观。现在参照图3,图中示出了根据本发明的实施例的混合分布系统300的示例图。图 3示出了各个组件,其中包括语料库管理器310、语料库根部312以及两个片段,即片段314 和片段316。可以提供多于两个片段,正如省略号318所表明的那样。语料库管理器310保持哪些处理服务于正排索引和倒排索引的哪一个碎片的状态。其还保持每一个处理的温度和状态。该数据被用来生成用于将查询向外联合到不同片段的处理集合。语料库根部312 是顶层根部处理,其还执行查询规划功能。语料库根部312将把查询分散到所有所需片段上并且收集、合并结果,其可以包括定制逻辑。每一个片段具有片段根部,比如片段根部320 和片段根部322。片段根部充当用于联合查询并且聚集来自所联合的处理的结果的处理。 片段根部322可能是被重新指定给对于最终查询组配来说最优的叶片或节点的动态处理。如图所示,每一个片段根部包括多个节点。由于空间约束,对于片段根部320和片段根部332示出了三个节点。片段根部320包括节点322、节点3 和节点326。省略号328表明在本发明的范围内可以设想多于三个节点。片段根部334包括节点334、节点336 和节点338。由于可以由任意数目的节点构成片段根部,因此省略号340表明任意附加数量的节点。如前所述,每一个节点是能够执行多项计算(比如排序功能)的机器或计算设备。 举例来说,在一个实施例中,每一个节点包括LOl匹配器322A和L2排序器322B,正如在节点322处所示出的那样。类似地,节点3;34包括LOl匹配器334A和L2排序器334B。这些内容在前面做了更加详细的描述,但是总体排序处理的LO匹配和Ll排序阶段(初步排序阶段)可以被组合并且统称为LOl匹配器。由于每一个节点包括LOl匹配器和L2排序器,因此每一个节点一定还存储了倒排索引和正排索引的一部分,这是因为LOl匹配器在一个实施例中利用倒排索引,并且L2排序器利用正排索引。如前所述,每一个节点可以被指定属于所述片段的倒排和正排索引的一部分。与片段314相关联的片段通信总线330和与片段 316相关联的片段通信总线342允许每一个节点在必要时例如与片段根部通信。图4是根据本发明的一些实施例的示出了有效载荷要求的混合分布系统400的示例图。系统400是具有多个节点的单个片段根部410的图示。在这里示出了六个节点(其中包括编号为412、414、416、418、420和422的节点)。虽然示出了六个节点,但是可以利用任意数目的节点来实施本发明的实施例。如前所述,每一个节点具有执行各种排序计算的功能,其中包括匹配级(L0)、初步排序级(Li)和最终排序级(L2)中的那些排序计算。因此, 节点412例如具有用于这里所描述的LO和Ll级的LOl匹配器412A和用于这里所描述的 L2级的L2排序器412B。但是对应于不同各级的有效载荷可能有很大不同。为了更好地说明这一点,以第一种图案示出了对应于LOl匹配器的有效载荷并且用数字似4标记,并且以第二种图案示出了对应于L2匹配器的有效载荷并且用数字似6标记。被分配给特定片段的文档群组通过原子(倒排索引)并且通过文档(正排索引)而被索引或碎片化。这些索引被分成等于构成该特定片段的节点数目的部分。在一个实施例中有四十个节点,因此倒排索引和正排索引当中的每一项被分成四十个部分,并且被存储在每一个对应的节点处。当搜索查询被提交到搜索引擎时,所述查询被发送到每一个片段。 片段的责任是识别出其倒排索引具有来自索引的查询的其中一个或更多原子的第一节点集合。利用这种方法,如果查询被解析成两个原子,例如来自查询“William Shakespeare" 的“William”和‘Shakespeare”,则片段中的对于LOl匹配器所将占用的最多节点数目将是两个。这一点在图4中示出,这是因为与节点412和节点416相关联的LOl匹配器是被识别成用在LOl匹配处理中的仅有的两个。由于被指定给每一个片段的文档通过原子索引, 因此每一个原子在倒排索引中仅被索引一次,从而任何特定原子仅仅存在于被分配给该片段的各个节点的其中一个倒排索引部分中。在一种示例性情形中,一旦识别出第一节点集合,就把与倒排索引中的原子相匹配的来自搜索查询的原子发送到适当的节点。该节点执行许多计算,从而识别出文档集合。该第一文档集合在一个实施例中包含接收到来自初步排序阶段的最高排序的那些文档。在片段根部410处从第一节点集合当中的每一个节点收集该第一文档集合,第一节点集合包括节点412和416。按照许多方式中的任一种组合这些结果,从而使得片段根部410可以接下来识别出将结合最终排序级使用的第二节点集合。如图所示,每一个L2排序器被采用在最终排序级(或L2级)中。这是因为每一个节点已经存储了用于该片段的正排索引的一部分,因此在最终排序级中有很大的几率将需要访问大部分或所有正排索引。在最终排序级中,为第二节点集合当中的每一个节点提供在其正排索引中所包含的文档标识,从而使得所述节点可以至少基于在正排索引中找到的数据来对该文档进行排序。由于大多数或者所有节点都被采用在最终排序级中,因此如图4的系统400中所示,最终排序级的有效载荷通常大于匹配/初步排序级的有效载荷。片段通信总线4 允许各个节点与其他组件通信,比如例如片段根部410。参照图5,该流程图示出了根据本发明的实施例的用于根据搜索查询利用混合分布系统识别相关文档的方法500。首先,在步骤510中为片段分配文档群组。在所述片段处接收到所述文档群组之前或之后,通过倒排索引中的原子并且通过正排索引中的文档对所述文档群组进行索引,正如步骤512中所表明的那样。这样,在正排索引中索引的文档就是构成被分配给该片段的文档群组的文档,并且从这些文档的内容解析倒排索引中的原子。 在步骤514中,在所述片段中的每一个节点处存储倒排索引和正排索引的一部分。一般来说,各个片段由多个节点构成。每一个节点是能够根据存储在其上的倒排索引部分和正排索引部分执行排序计算的机器或计算设备。在一个实施例中,每一个节点存储所述片段的倒排索引和正排索引的不同或独特部分。步骤516表明,在第一节点集合当中的每一个节点处访问倒排索引部分。第一节点集合当中的每一个节点已经被识别为索引了所接收到的搜索查询的其中一个原子。在步骤518中识别出第一文档集合。在一个实施例中,已经利用初步排序功能对这些文档进行了排序,从而可以识别出最具相关性的文档。该步骤例如可以对应于Ll初步排序阶段和/ 或LO匹配阶段。基于与第一文档集合当中的文档相关联的文档标识,在第二节点集合当中的每一个节点处访问正排索引部分,正如步骤520中所示。该步骤可以对应于L2最终排序级。这样有效地限制了对应于特定搜索查询的相关文档的数量。因此,文档数量被限制到第二文档集合,正如步骤522中所示。在许多或大多数情况中,第二集合中的节点数目多于第一集合中的节点数目,正如前面更加详细地描述的那样。这是因为搜索查询可能只有两个原子,从而对于LOl匹配阶段最多需要两个节点,但是成千的文档被识别为与搜索查询的所述两个原子相关,并且因此可能采用多得多的节点以便使用其对应的正排索引来执行最终排序计算,从而识别出第二文档集合。此外,在各个实施例中,由于最终排序功能利用了从初步排序功能产生的文档标识,因此第二集合中的文档数目少于第一集合中的文档数目,从而第二集合当中的每一个文档也被包含在第一集合中。在一个实施例中,总体处理可能涉及接收搜索查询。识别出搜索查询中的一个或更多原子,并且一旦每一个片段知晓所述一个或更多原子,就在该片段中识别出包含来自搜索查询的一个或更多原子的至少其中之一的第一节点集合。第一节点集合当中的每一个节点向片段根部发送第一文档集合(例如文档标识),从而例如使得片段根部可以整合(例如删除重复)及合并结果。第二节点集合随后向片段根部发送第二文档集合。类似地,片段根部整合及合并结果,从而生成响应于搜索查询而被呈现给用户的最终文档集合。参照图6,其中示出了根据本发明的实施例的用于为多处理文档检索系统生成混合分布系统的方法600的流程图。在步骤610中,接收到关于文档群组的指示,所述文档群组被指定给接收该文档群组的片段。所述片段包括多个节点(例如十个、四十个、五十个)。 通过原子索引所述文档群组,从而生成倒排索引,正如步骤612中所示。在步骤614中,通过文档索引所述文档群组,从而生成正排索引。在步骤616中,将倒排索引的一部分和正排索引的一部分指定给构成所述片段的每一个节点。在各个实施例中,为每一个节点指定倒排和正排索引的不同部分,从而使得特定原子仅在片段内的一个节点的正排索引中被索引。在各个实施例中,在所述片段处接收到关于已从搜索查询识别出的一个或更多原子的指示。识别出其倒排索引部分包括所述一个或更多原子的至少其中之一的第一节点集合。这些节点分别能够执行各项排序功能。基于第一节点集合的倒排索引部分识别出第一文档集合。第一集合当中的每一个节点可以产生第一集合并且将其发送到片段根部,从而可以整合及合并各个第一节点集合。在一个情况中,通过利用存储在其上的倒排索引部分的多级排序处理的初步排序处理产生第一文档集合。此外,随后可以识别出其正排索引部分索引了对应于第一文档集合的一个或更多文档标识的第二节点集合。随后可以部分地基于存储在正排索引中的数据而识别出第二文档集合,并且可以实时地而不是利用预先计算的分数来计算各项特征。可以基于利用正排索引的多级排序处理的最终排序处理来识别第二文档集合。一旦来自第二节点集合当中的每一个节点的第二文档集合被整合及合并,就将其与来自所有其他片段的第二文档集合合并,从而形成最终文档集合并且将其返回给用户以作为搜索结果。图7是示出了根据本发明的实施例的用于根据搜索查询利用混合分布系统来识别相关文档的方法700的流程图。首先,在步骤710中,接收到搜索查询。在步骤712中,识别出搜索查询中的各个原子。在步骤714中,将所述原子传送到各个片段。每一个片段已被指定文档群组,所述文档群组通过原子并且通过文档而被索引从而形成存储在每一个片段处的倒排索引和正排索引。每一个片段由多个节点构成,每一个节点都被指定正排索引和倒排索引的一部分。在步骤716中,识别出其倒排索引部分包含来自搜索查询的至少其中一个原子的第一节点集合。在步骤718中,访问第一节点集合当中的每一个节点的倒排索引部分,以便识别出第一相关文档集合。基于与第一文档集合当中的每一个文档相关联的文档标识,在步骤720中识别出第二节点集合。第二节点集合当中的每一个节点已经在其对应的正排索引部分中存储了至少其中一个所述文档标识,从而该节点可以对每一个文档执行排序处理。在步骤722中访问第二节点集合当中的每一个节点处的正排索引部分, 以便限制相关文档的数目。在一个实施例中,第二文档集合当中的每一个文档也被包含在第一文档集合中。基于第二文档集合,(例如通过编辑来自该多个片段的第二文档集合)生成搜索结果并且呈现给用户。前面关于具体实施例描述了本发明,所述实施例意图在所有方面都是说明性而非限制性的。在不背离本发明的范围的情况下,本领域普通技术人员将认识到替换实施例。从前述内容可以看出,本发明非常适合于实现前面所阐述的所有目标和目的,并且同时具有所述系统和方法所明显固有的其他优点。应当理解的是,某些特征和子组合具有实用性,并且可以在不参照其他特征和子组合的情况下被采用。这一点被设想在权利要求书的范围内。
权利要求
1.一种基于搜索查询利用混合分布系统来识别相关文档的方法,所述方法包括 为片段分配510文档群组,所述文档群组在倒排索引中由原子索引并且在正排索引中由文档索引;在形成所述片段的多个节点当中的每一个节点上存储514倒排索引和正排索引的不同部分;访问516存储在第一节点集合当中的每一个节点上的倒排索引部分,以便识别与搜索查询相关的第一文档集合;以及基于与第一文档集合相关联的文档标识,访问520存储在第二节点集合当中的每一个节点上的正排索引部分,以便把第一文档集合中的相关文档的数量限制到第二文档集合。
2.权利要求1的方法,其中,节点是能够基于其所存储的倒排索引部分和正排索引部分来执行排序计算的机器。
3.权利要求1的方法,其中,第二节点集合当中的节点数量大于第一节点集合当中的节点数量。
4.权利要求1的方法,其中,通过作为多级排序处理的一部分的初步排序处理将第一文档集合识别为与搜索查询相关,其中初步排序处理利用倒排索引部分。
5.权利要求4的方法,其中,第二文档集合当中的每一个文档被包含在第一文档集合中。
6.权利要求5的方法,其中,通过作为总体排序处理的一部分的最终排序处理识别出第二文档集合,其中最终排序处理利用正排索引部分。
7.权利要求1的方法,还包括 接收搜索查询;识别出搜索查询中的一个或更多原子;以及在所述片段中识别出包含所述一个或更多原子的至少其中之一的第一节点集合。
8.权利要求1的方法,其中,存储在第二节点集合当中的每一个节点上的正排索引部分包含至少其中一个与第一文档集合相关联的文档标识。
9.权利要求1的方法,其中,合并来自多个片段的第二文档集合以便生成响应于搜索查询而被呈现给用户的最终文档集合。
10.一种为多处理文档检索系统生成混合分布系统的方法,所述方法包括 接收610关于被指定给片段的文档群组的指示,所述片段包括多个节点; 对于所述片段,(1)通过原子索引612所分配的文档群组以便生成倒排索引,并且(2)通过文档索引614所分配的文档群组以便生成正排索引;以及将倒排索引的一部分和正排索引的一部分指定616给形成所述片段的多个节点当中的每一个,从而使得所述多个节点当中的每一个存储正排索引的不同部分和倒排索引的不同部分。
11.权利要求10的方法,还包括在所述片段处接收关于已从搜索查询识别的一个或更多原子的指示; 识别出其倒排索引部分包括所述一个或更多原子的至少其中之一的第一节点集合;以及部分地基于第一节点集合的倒排索引部分识别出第一文档集合。
12.权利要求11的方法,还包括识别出其正排索引部分包括对应于第一文档集合的一个或更多文档标识的第二节点集合;以及至少基于正排索引部分中的数据识别出第二文档集合。
13.权利要求11的方法,其中,基于利用倒排索引部分的多级排序处理的初步排序处理来识别第一文档集合。
14.权利要求12的方法,其中,基于利用正排索引部分的多级排序处理的最终排序处理来识别第二文档集合。
15.权利要求12的方法,其中,基于搜索查询被传送以供呈现给用户的搜索结果是基于接收自多个片段的第二文档集合。
16.一种基于搜索查询利用混合分布系统来识别相关文档的方法,所述方法包括 接收710搜索查询;识别712搜索查询中的一个或更多原子;向分别被指定由原子和文档二者索引的文档群组的多个片段传送714所述一个或更多原子,从而使得在所述多个片段当中的每一个片段处生成并存储倒排索引和正排索引, 其中所述多个片段当中的每一个由多个节点构成,所述节点分别被指定正排索引和倒排索引的一部分;基于所述一个或更多原子,在第一片段处识别出716其倒排索引部分包含来自搜索查询的所述一个或更多原子当中的至少一个的第一节点集合;访问718存储在第一节点集合当中的每一个节点处的倒排索引部分,以便识别出被发现与所述一个或更多原子相关的第一文档集合;基于与第一文档集合相关联的文档标识,识别出720其正排索引部分包含其中一个或更多与第一文档集合相关联的文档标识的第二节点集合;以及访问722存储在第二节点集合当中的每一个节点处的正排索引部分,以便识别出作为第一文档集合的子集的第二文档集合。
17.权利要求16的方法,其中,第二文档集合中的文档被发现是第一文档集合中的文档当中最具相关性的。
18.权利要求16的方法,还包括基于第二文档集合传送搜索结果以供呈现给用户。
19.权利要求16的方法,还包括接收来自所述多个片段当中的每一个的第二文档集合
20.权利要求19的方法,还包括合并每一个第二文档集合,从而生成相关文档合并列表。
21.存储计算机可用指令的一种或更多种计算机存储介质,当由计算设备使用时,所述计算机可用指令使得计算设备执行如权利要求1-20中的任一个的方法。
全文摘要
本发明提供了用于搜索引擎索引的混合分布模型,并且还提供了基于搜索查询使用混合分布系统来识别相关文档的方法和系统。为特定片段指定文档群组。所述文档群组由原子和文档索引,从而形成倒排索引和正排索引。全部两项索引被划分在该片段中的每一个节点当中,从而使得每一个节点负责存储及访问倒排索引和正排索引二者的不同部分。在第一节点集合当中的每一个节点上访问倒排索引部分,以便识别出与特定搜索查询相关的第一文档集合。使用与第一文档集合相关联的文档标识来识别出第二节点集合,所述第二节点集合访问其正排索引部分以便把相关文档的数目限制到第二文档集合。
文档编号G06F17/30GK102402605SQ20111037339
公开日2012年4月4日 申请日期2011年11月22日 优先权日2010年11月22日
发明者P. 沃特斯 C., O. 彼得森 J., 贝内特 J., M. 里斯维克 K., 卡亚纳拉曼 K., 霍普克罗夫特 M., 基林比 T., 帕里克 V. 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1