具有分层存储的索引的搜索引擎的制作方法

文档序号:6499466阅读:219来源:国知局
专利名称:具有分层存储的索引的搜索引擎的制作方法
技术领域
本发明涉及搜索引擎,更具体地涉及将搜集到(crawled)的文档映射 到多个分层中,然后按照分级方式搜索那些分层的搜索引擎。
背景技术
万维网("WWW")是包括可以经互联网访问的数十亿个网页的分 布式数据库。搜索和索引这些网页以产生响应于用户査询的有用结果一直 都是个难题。通常用于搜索WWW的设备是搜索引擎。维护有效的搜索引 擎是很困难的,因为WWW是在不断地变化的,每天有数百万个网页被添 加,而且现有网页也在连续不断地变化。此外,执行搜索的成本通常直接 对应于被搜索的索引的大小。为了处理WWW中的大量数据,大多数搜索 引擎都是分布式的并且使用复制和分割技术(下面会进行讨论)以縮减文 档的数量。
图1中示出了典型的现有技术的搜索引擎50。利用采集器102访问来 自互联网或其它源100的网页。采集器102集合来自源100的文档以确保 这些文档可被搜索。有很多用于采集器的算法,并且在大多数情况下,这 些采集器顺着已知的超文本文档中的链接来获得其它文档。采集器120所 获取的网页被存储在数据库108中。之后,索引器104为这些文档建立索 引。索引器104为数据库108中的文档建立可搜索的索引。用于建立索引 的典型的现有技术方法包括倒排文件、向量空间、后缀结构及这些方法的 混合。例如,每个web网页可以被分解成网页上的词和每个词各自的位 置。然后利用这些词和它们各自的位置来为网页建立索引。然后将整个数 据库108的主索引分解成多个子索引(下面将讨论)并且将每个子索引发 送给搜索节点组106中的搜索节点。
在使用中,用户112将搜索査询输入到调度器110。调度器110应允
组106中的一列搜索节点执行査询并且将查询转发给那些被选择的搜索节 点。被应允的一列搜索节点要确保每个分区都被搜索一遍。搜索节点组
106中的搜索节点搜索由索引器104所产生的主索引中的各个部分并且将 分类后的搜索结果与文档标识符和分数一起返回给调度器110。调度器 110合并接收到的结果以产生显示给用户112的按相关分数分类的最终的 列表。相关分数是査询本身和所产生的文档类型的函数。用于相关的因素 包括诸如链接基数(cardinality)和网页性质之类的文档的静态相关分 数;诸如标题、元数据和文档头部之类的文档的高级部分;诸如外部引用 和引用"级别"之类的文档的权威性(authority);以及诸如文档中的査 询词频、全局性词频以及文档内词的相对距离之类的文档统计信息。
现在参考图2,其示出了搜索节点组106。为了说明,用矩阵的形式 示出了组106,其被集合在列122a、 122b等和行124a、 124b等中。在每 个搜索节点列122中,为每个搜索节点复制同一套索引。例如,列122a行 124a中的搜索节点与列122a行124b中的搜索节点包括同一套索引子集。 在每个搜索节点行124中,使用不同的索引子集。索引被等分以拆分用于 搜索的时间量。
例如,列122a行124a中的搜索节点包括与列122b行124a中的搜索 节点不同的索引子集。在每个搜索节点中,"I"表示用于整个数据库108 的索引,"S"对应于搜索节点,"Sn(In)"表示搜索节点n持有整个索引I 的子索引n,并且"SnmO0"表示复制编号为m的搜索节点n持有整个索 引I的子索引n。
来自调度器110的每个查询被发送给各个搜索节点以使得每个分区中 的单个节点被査询。例如,行124a、 124b等中的所有节点都被査询,因为 这些节点的组合表示总索引。即组120中的每一行都是包括整个索引的所 有分区的一组搜索节点。得到的结果被调度器110合并,生成来自该组的 完整结果。通过按上述方式分割数据,数据量被縮减了。例如,如果有n 列,则每个节点的搜索时间基本上被减少了 n倍一除去调度器110用于合 并结果的时间。
通过复制搜索节点,提高了每个索引的查询处理速度。在图2中,每
一列的所有搜索节点都持有相同的索引。这使得调度器110在选择一组搜 索节点来处理输入査询时可以在每个索引分区的列中的节点之间轮换。
但是,发明人已经确定在典型的搜索引擎中存在倾斜度非常大的搜索 查询分布。例如,最上面的25个査询可以占到总査询量的1%。因此,将 主索引等分成更小的子索引不能得到最佳结果。
因此,在本领域中需要能够考虑搜索查询的分布来组织其文档和索引 的搜索引擎。

发明内容
一种搜索引擎,其包括搜索WWW并且将在WWW上找到的网页存 储在数据库中的采集器。索引器将数据库中的网页编入索引以产生主索 引。文档映射部件基于网页的等级将数据库中的网页映射到多个分层中。 等级可以基于网页中具有较高价值的上下文。处理器基于上述映射从主索 引中产生多个子索引。子索引被存储在搜索节点组中。该搜索节点组是在 逻辑上被排列成多个行和列的搜索节点矩阵。同一列中的搜索节点包括相 同的子索引。同一行中的搜索节点包括不同的子索引。从用户接收到的搜 索查询被发送到调度器,调度器又将査询转发给第一层的搜索节点。公开 了滑落(fall through)算法,其指示调度器何时应当将搜索查询转发给搜 索节点的其它层。
本发明的一个方面是一种用于为数据库中的数据项建立索引的方法。 该方法包括从数据库中获取数据项并产生数据项的主索引。该方法还包括 基于数据项各自的等级将数据项映射到至少第一层和第二层上。该方法还 包括基于上述映射从主索引中产生至少第一和第二子索引;以及将上述至 少第一和第二子索引存储在不同的搜索节点中。
本发明的另一个方面是用于搜索数据库的方法。该方法包括从数据库 中获取数据项并且产生数据项的主索引。该方法还包括基于数据项各自的 等级将数据项映射到至少第一层和第二层上。该方法还包括基于上述映射 从主索引中产生至少第一和第二子索引。该方法还包括将上述至少第一和 第二子索引存储在不同的搜索节点中;接收搜索査询;以及搜索第一层寻
找与搜索査询相关的结果数据项。
本发明的另一个方面是用于为数据库建立索引的系统。该系统包括搜 集数据库以找到数据项的采集器。索引器接收数据项并且产生主索引。文 档映射部件基于数据项各自的等级将数据项映射到至少第一和第二层上。 处理器基于上述映射从主索引中产生至少第一和第二子索引。第一搜索节 点存储第一子索引。第二搜索节点存储第二子索引。
本发明的另一方面是实现对数据库的搜索的搜索节点组。搜索节点组 包括在逻辑上被排列在多个行和列中的搜索节点。任一列中的所有搜索节 点实质上包括相同的信息。任一行中的所有搜索节点包括不同的信息。行 中的搜索节点逻辑上被分为至少第一和第二层。第一层中的搜索节点包括 对于数据库中的第一部分的索引。第二层中的搜索节点包括对于数据库中 的第二部分的索引。第一和第二层中的数据分别基于数据库的第一和第二 部分中的信息的等级。
本发明的另一个方面是一种包括搜集数据库以找到数据项的采集器的 搜索引擎。索引器接收数据项并且产生主索引。文档映射部件基于数据项 各自的等级将数据项映射到至少第一和第二层上。处理器基于上述映射从 主索引中产生至少第一和第二子索引。第一搜索节点存储第一子索引。第 二搜索节点存储第二子索引。调度器接收查询并且将查询转发给第一搜索 节点。


图l是示出了现有技术的搜索引擎结构的框图。
图2是示出了根据现有技术的一组节点的示图。
图3是示出了根据本发明实施例的搜索引擎的框图。
图4是示出了根据本发明的实施例将文档映射到分层中的功能的示图。
图5是示出了根据本发明的实施例将文档映射到分层和相应的一组节 点中的示图。
图6是示出了根据本发明的实施例将文档映射到分层和相应的一组节 点中的示图。
图7是示出了根据本发明的实施例将文档映射到分层和相应的一组节 点中的示图。
图8是示出了根据本发明实施例的滑落算法的各个变量的值的表格。
图9是示出了根据本发明实施例的搜索算法的操作的流程图。
具体实施例方式
参考图3,示出了根据本发明实施例的搜索引擎90。采集器102搜集 例如互联网100之类的信息源或例如企业或机构的网络之类的其它文件或 文档集,然后将数据存储在与信息源相对应的数据库108中。然后,文档 映射算法114将文档映射到分层中,下面会讨论。由处理器lll控制的索 引器105基于数据库108中映射后的文档建立多个子索引。搜索节点组 160中的多个搜索节点中的每一个都存储有各自的子索引并且能够搜索各 自的子索引。调度器IIO将来自用户112的查询发送给搜索节点组160, 下面会讨论。
最近的研究发现存在对互联网上最普遍的信息查询的倾斜分布。例 如,大多数査询(50%—80%)在一百万个最经常被请求的查询之内。类 似地,不同月份中的各天重复着80 — 85%的相同查询。相反,只有7%的 査询在类似的时间段中仅被请求过一次。为了利用这些事实,搜索引擎使 用不相交的分层结构,其中不必对索引进行等分。
现在参考图4,基于一组属性将数据库108中的每一条数据映射到多 个分层(图中示出了三个分层)中的一层中。例如,被认为具有在由数据 库管理者定义的第一阈值以上的与搜索査询无关的静态相关等级的文档可 以被映射到第I层。具有基于另一阈值的第二高的等级的文档可以被映射 到第II层。又如,每个文档或web网页中的多个部分可以被分到不同的分 层中。在特定文档中,如图4所示,诸如头部和锚(anchor)之类的高级 上下文可以置于第I层中而文档的主体可以置于第n层中。周期性地对数 据库108中的数据执行映射。
现在参考图5,数据结构(未明确地示出)被存储在调度器110中以
使得组160中的搜索节点在逻辑上被安排到特定的分层。在文档映射算法
114将数据库108中的文档映射到分层中以后,索引器105基于上述分层 产生多个相应的子索引。子索引被存储在组160中的各个搜索节点中。组 160包括搜索节点的逻辑列162a、 162b、 162c等和逻辑行164a、 164b 等。虽然这些节点被示为物理上被布置为行和列,但是应当清楚这些节点 在物理上不必如此布置,只要它们在逻辑上按类似的方式排列即可。
每一列162中的搜索节点包括对同一子索引的复制,因此调度器110 可以循环经过多个搜索节点。每一行164中的搜索节点包括不同的子索 引。例如,如图5中所示,列162a中的搜索节点都包括来自第I层的信 息。因而,通过算法114确定要被映射到第I层的文档被映射到第I层, 在索引器105中创建子索引并且针对第I层的子索引被存储在列162a中的 搜索节点中。
类似地,列162b中的搜索节点包括在第II层中的一部分信息。列 162c中的搜索节点包括来自第II层的没有包括在列162b中的搜索节点中 的剩余信息。示出了第n层的两个搜索节点列,并且索引可以在这些节点 之间等分。很显然可以使用任意数目的节点。
类似地,列162b中的搜索节点包括来自第III层的一部分信息。为了 便于图示组160,每一列中的节点被示为具有相同的大小,但是很清楚每 个节点可以包括与同一行中的其它节点相同或不同的信息量。例如,列 162a行164a中的节点相比列162b行164a中的节点可能具有较少的信息, 因为它们在不同的分层中。作为所示出的分层结构的示例,在所有第I层 的节点中可以为150万个文档建立索引,在所有第二层的节点中可以为 600万个文档建立索引,而在所有第三层的节点中可以为IOOO万个文档建 立索引。
来自调度器110的每个查询首先在第一层的索引中被搜索,然后搜索 基于存储在调度器110中的滑落算法("FTA")继续到其它分层的索 引。FTA确定査询是否应当在其它分层中继续执行,并且还确定应当如何 合并来自多个分层的结果。换一种说法,FTA基于诸如结果集合中的相关 分数和索引项(hit)数之类的标准来确定一组分层中的查询路径。FTA还 确定在考虑下一个分层之前每个分层有多少结果可以被使用。
FTA使用多个变量来确定是否应当考虑下一个分层,所述变量包括
hitlimit 、 percentlimit 、 ranklimit 、 termranklimit禾口 minusablehits 。 变量 hitlimit是对在执行向下一分层的滑落(fall-through)之前来自分层的要使 用的索引项数的估计。例如,对于从第l层到第2层的跳变,hitlimit可以 是1000,而对于从第2层到第3层的跳变,hitlimit可以是8100。 Percentlimit是在执行向下一分层的滑落之前可被使用的来自分层的索引项 的最大百分数。如果给定分层中的索引项数小于所有被请求的结果的 percentlimit,则发生滑落。例如,对于从第1层到第2层的跳变, percentlimit可以是10,而对于从第2层到第3层的跳变,percentlimit可以 是30。 Termranklimit —如果正在被考虑的索引项的相关分数小于 termranklimit的值乘以查询中的词数加上另一变量Ranklimit的结果,则执 行向下一个分层的滑落。例如,对于从第1层到第2层的跳变,mnklimit 可以是200并且termranklimit是400。例如,在两个词的查询中,通过上 述标准的索引项的相关分数将是200+(2X400) =1000。对于从第2层到第 3层的跳变,ranklimit可以是0并且termranklimit是0 。
Mimisablehits —对于给定分层为了不进行紧接着向下一分层滑落而应 当通过上述FTA的标准的索引项数。这个数目通常是在结果网页上呈现给 用户的结果数。其思想是如果已知为了产生最经常被请求的索引项数而需 要滑落,则应当尽早进行滑落。这个变量应当使用常数值。例如,对于从 第1层到第2层的跳变,minusablehits可以是0,而对于从第2层到第3层 的跳变,minusablehits可以是100。
由于第2层仅处理经过了第1层的那些査询,并且第3层仅处理经过 了第1层和第2层的査询,所以希望第I层具有最好性能的节点。第2和 第3层中额外的容量可以通过复制列或者通过减少每个节点处的文档数来 实现。
在图5的实施例中,使用了一维分层结构,其中使用静态相关分数分 配所有的文档和相应的索引。例如,静态相关分数可以基于web上的链接 基数、链接的受欢迎性或站点的受欢迎性。
例如,在有十亿个记录的数据库中,基于静态相关,最上面的3千万
个文档被映射到第1层,接下来的3亿6千万个文档被映射到第2层,再 接下来的6亿1千万个文档被映射到第3层。这种配置的一个缺点是使用 静态相关仅仅是用于确定相关文档的全部方案的一部分。
现在参考图6,示出了根据本发明的另一组节点170。组170可以用 来替换组160并且包括在列172a、 172b等和行174a、 174b等中的节点。 在本实施例中,实现了 1.5维的配置。在一段时间中,为一百万个最常见 的查询运行查询日志。上述一百万个查询中的每个查询的最开始的20个 索引项被映射到第1层,如图6中的176所示。这可能有大约五百万个文 档。余下的文档根据静态相关分数进行分配。例如,对于有十亿个文档的 数据库,最上面的3千万个文档被映射到第1层(这些文档中的五百万个 文档被锁定到这一层),3亿6千万个文档被映射到第2层,并且6亿1 千万个文档被映射到第3层。如上所述使用了 FTA。
现在参考图7,示出了根据本发明的另一组节点180。组180可以用 来替换组160并且包括在列182a、 182b等和行184a、 184b等中的节点。 在本实施例中,实现了2维的配置。在图7的实施例中,可选地使用了与 图6中的1.5维的配置相同的分层分布。但是,所有文档的高价值上下文 中的信息被首先与第I层同时搜索。在确定文档的动态相关时,这些高价 值上下文是各个web网页中最重要的部分。这些部分包括标题、锚等。
如果需要更多的索引项,则在从返回的结果中除去副本的同时使用多 层配置来连续地搜索全部索引。例如,最上面的3千万个文档(如上所述 有5百万个文档被锁定)的主体上下文被映射到第1层,3亿6千万个文 档的主体上下文被映射到第2层,并且6亿1千万个文档的主体上下文被 映射到第3层。使用新的第O层,其包括全部的十亿个文档的高级上下文 (superior context)。图8中示出了用于组180的体系结构的FTA的一些 变量值。可选的第4层可以用于较低价值的文档。这种文档可以是纯链接 或垃圾信息文档。通过搜索第0层中的所有层的高价值上下文,本发明利 用了以下事实,即在第2层和第3层的节点中搜索相对较小的子集的信息 比在这些节点中搜索被编入索引的全部信息要廉价得多。
现在参考图9,示出了总结了本发明的一些操作的流程图。在S2中,
搜索引擎搜集数据源。在S4中,从数据源汇集的文档被存储在数据库 中。在S6中,使用上述算法中的一种将文档分成多个分层。在S8中,文 档被映射到所确定的分层中。在S10中,基于所确定的分层产生子索引。 在S12中,将子索引存储在搜索节点组中的各个搜索节点中。在S13中, 接收来自用户的搜索查询。在S14中,搜索引擎搜索第I层中的索引。在 S16中,基于FTA,搜索引擎搜索第II层的搜索节点和其它层的搜索节 点。在S18中,将搜索的结果提供给用户。
因而,通过将数据库中的采集到的文档映射到不相交的多个分层中, 实现了更快速、更节约成本的搜索引擎。此外,通过提供可以动态地决定 搜索多少个分层的滑落算法,提高了对数据库的縮减。
虽然结合优选实施例描述并示出了本发明,但是本领域技术人员应当 清楚在不脱离本发明的精神和范围的情况下可以进行各种变化和修改,并 且本发明不应被局限于上述方法或结果的具体细节中,因为上述变化和修 改也要包括在本发明的范围内。
权利要求
1.一种用于为数据库中的数据项建立索引的方法,所述方法包括从数据库中获取数据项;产生所述数据项的主索引;基于所述数据项各自的等级将所述数据项映射到至少第一和第二层上;基于所述映射从所述主索引产生至少第一和第二子索引;以及将所述至少第一和第二子索引存储在不同的搜索节点中。
2. 根据权利要求1所述的方法,其中所述数据库是可以通过万维网 得到的网页和文档的集合。
3. 根据权利要求1所述的方法,其中所述映射基于所述数据项的静 态相关分数。
4. 根据权利要求1所述的方法,还包括 在所述数据库上执行用于大量査询的搜索査询日志;以及 接收所述搜索査询日志的结果; 其中所述第一子索引基于所述査询日志的结果。
5. 根据权利要求3所述的方法,还包括 在所述数据库上执行用于大量查询的搜索查询日志;以及 接收所述搜索查询日志的结果; 其中所述第一子索引基于所述査询日志的结果。
6. 根据权利要求1所述的方法,其中所述映射基于所述数据项的价 值上下文。
7. 根据权利要求1所述的方法,其中所述数据项为web网页并且所 述映射基于所述web网页的相关分数。
8. —种用于搜索数据库的方法,所述方法包括 从数据库中获取数据项; 产生所述数据项的主索引;基于所述数据项各自的等级将数据项映射到至少第一和第二层上; 基于所述映射从所述主索引产生至少第一和第二子索引; 将所述至少第一和第二子索引存储在不同的搜索节点中; 接收搜索查询;以及搜索所述第一层以寻找与所述搜索查询有关的结果数据项。
9. 根据权利要求8所述的方法,还包括当所述第一层不能产生阈值数目的结果数据项时,搜索所述第二层以 寻找与所述搜索査询有关的结果数据项。
10. 根据权利要求8所述的方法,其中当所述第一层不能产生阈值数 目的结果数据项时,搜索所述第二层。
11. 一种用于为数据库建立索引的系统,所述系统包括 采集器,其搜集所述数据库以寻找数据项;索引器,其接收所述数据项并产生主索引;文档映射部件,其基于所述数据项各自的等级将所述数据项映射到至 少第一和第二层上;处理器,其基于所述映射从所述主索引产生至少第一和第二子索引; 第一搜索节点,其存储所述第一子索引;以及 第二搜索节点,其存储所述第二子索引。
12. —种用于实现对数据库的搜索的搜索节点组,包括 逻辑上被排列在多个行和多个列中的多个搜索节点; 所述多个列中任一列中的所有搜索节点实质上包括相同的信息; 所述多个行中任一行中的所有搜索节点包括不同的信息; 所述多个行中的搜索节点逻辑上被分为至少第一和第二层; 所述第一层中的搜索节点包括针对所述数据库的第一部分的索引;以及所述第二层中的搜索节点包括针对所述数据库的第二部分的索引;其中所述第一和第二层中的数据基于所述数据库的第一和第二部分中的信 息各自的等级。
13. —种搜索引擎,包括 采集器,其搜集数据库以寻找数据项;索引器,其接收所述数据项并产生主索引;文档映射部件,其基于所述数据项各自的等级将所述数据项映射到至少第一和第二层上;处理器,其基于所述映射从所述主索引产生至少第一和第二子索引;第一搜索节点,其存储所述第一子索引;第二搜索节点,其存储所述第二子索引;以及调度器,其接收査询并且将所述査询转发给所述第一搜索节点。
14. 根据权利要求13所述的搜索引擎,其中所述第一子索引被存储 在逻辑上排列在第一多个列中的第一多个搜索节点中;所述第二子索引被 存储在逻辑上排列在第二多个列中的第二多个搜索节点中,以使得所述第 一和第二子索引被进而在逻辑上排列在各自的多个逻辑行中。
15. 根据权利要求13所述的搜索引擎,其中当所述第一层没有产生 阈值数目的结果数据项时,所述调度器将所述查询发送给所述第二层。
16. 根据权利要求13所述的搜索引擎,其中当所述第一层未产生阈 值数目的结果数据项时,所述调度器将所述査询发送给所述第二层。
全文摘要
一种搜索引擎,其包括搜索WWW并且将在WWW上找到的网页存储在数据库(100)中的采集器(102)。索引器(105)将数据库中的网页编入索引以产生主索引。文档映射部件(114)基于网页的等级将数据库中的网页映射到多个分层中。等级可以基于网页中具有较高价值的上下文。处理器基于上述映射从主索引中产生多个子索引。子索引被存储在搜索节点组(160)中。该组是在逻辑上被排列成多个行和列的搜索节点矩阵。同一列中的搜索节点包括相同的子索引。同一行中的搜索节点包括不同的子索引。从用户(112)那接收到的搜索查询被发送到调度器(110),调度器又将查询转发给第一层的搜索节点。公开了滑落算法,其指示调度器何时应当将搜索查询转发给搜索节点的其它层。
文档编号G06F17/30GK101189602SQ200480033085
公开日2008年5月28日 申请日期2004年11月9日 优先权日2003年11月10日
发明者克努特·玛格纳·里斯维克, 哈瓦德·派特森, 托尔·埃格, 耶格威·阿舍米 申请人:奥弗图尔服务公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1