具体实施方式
现在将参考附图来描述关于通过使用搜索高速缓存来在多个文档中进行搜索的各种技术,在全部附图中相同的附图标记表示相同的元素。另外,本文出于解释的目的示出并描述了各示例性系统的若干功能框图;然而可以理解,被描述为由特定系统组件执行的功能可以由多个组件来执行。类似地,例如,一组件可被配置成执行被描述为由多个组件执行的功能。另外,如此处所用的,术语“示例性”旨在表示用作某些事物的图示或示例,而不意图指示优选。
参考图1,示出了配置有搜索高速缓存的示例性计算设备100,可结合搜索文档来利用该搜索高速缓存。计算设备100可以是任何合适的计算设备,包括但不限于个人计算机、膝上型计算机或某一其他合适的计算设备。在特定示例中,计算设备100可以是诸如移动电话、移动媒体播放器、移动游戏设备、电子阅读器之类的移动计算设备,或其他合适的计算设备此外,如此处使用的,术语“文档”旨在包括多个不同类型的电子文档,其中这样的电子文档可具有与其对应的关键词。由此,如此处使用的,文档可以是文字处理文档、图像、电子邮件、网页、电子表格文档、多媒体文件、或其他合适的文档。此外,文档可具有与其对应的关键词,其中关键词可以是该文档中所包括的文本的一部分、与该文档对应的元数据、分配给该文档的标签等。
计算设备100包括从用户接收查询的接收器组件102,其中该查询由用户来制定以定位可跨用户的各计算设备分布的一个或多个文档。例如,查询可包括一个或多个关键词,并且用户可通过合适的用户界面将该查询提供给计算设备100,该用户界面包括按钮、键盘、接受语音命令的话筒等。
搜索组件104与接收器组件102进行通信,并且在驻留在计算设备100的存储器中的搜索高速缓存106中执行搜索。搜索组件104至少部分基于由接收器组件102所接收的查询来在搜索高速缓存中执行搜索。显示器108与搜索组件104进行通信,使得可将搜索组件108所检索的搜索结果在计算设备100的显示器108上显示给用户。显示器108可在计算设备100外部或可与计算设备100集成。另外地或另选地,计算设备100可包括数据存储介质,并且由搜索组件1014输出的搜索结果可被保留在该数据存储介质中。
在示例性实施例中,搜索缓存106包括多个不同类型的高速缓存。例如,搜索高速缓存106可包括结果高速缓存110、索引高速缓存112和布尔高速缓存114。在示例性实施例中,布尔高速缓存114可以是布隆过滤器。布隆过滤器是一数据结构,该数据结构可用于测试元素是否驻留在集合中。
结果高速缓存110可包括多个查询以及与这些查询对应的预先计算的搜索结果。例如,该多个查询可以是由一个用户或用户集所频繁提交的查询。由此,如果用户利用查询“计算机销售”在文档集中频繁地搜索,则结果高速缓存110可包括这一查询以及与这一查询对应的搜索结果。与该查询对应的搜索结果可指示通过使用该查询所检索的文档的身份和位置。因此,如果结果高速缓存110中包括用户所提供的查询,则搜索组件104可将结果高速缓存110中的搜索结果返回给用户,而无需通过网络连接访问另一计算设备。
索引高速缓存112可以是倒排索引,该倒排索引包括多个关键词以及文档语料库中对应于这些关键词的文档。因此,在接收到该查询之后,搜索组件104可首先检查结果高速缓存110以确定结果高速缓存110中是否包括该查询。如果结果高速缓存110中未包括该查询,则搜索组件104可以搜索索引高速缓存112以寻找包括在该查询中的关键词。如果查询中的关键词在索引高速缓存112中存在,则搜索组件104可返回结果集并且使得这一结果集被显示在计算设备110的显示器108上,该结果集包括与该查询的关键词对应的文档的身份和位置。由此,如果搜索可基于索引高速缓存112的内容来执行,则不需要通过网络连接将该查询提交给另一计算设备,并且可在计算设备100处本地回答该查询。
布尔高速缓存114可被配置成指示查询中的关键词是否位于与特定文档语料库中的文档对应的元素集中。可以理解,搜索组件104没有利用布尔高速缓存114来返回搜索结果。相反,如果该查询中的关键词不与布尔高速缓存114所表示的特定文档语料库中的任何文档相对应,则搜索组件104可返回空结果集。如以下将更详细地描述的,布尔高速缓存114可与特定范围相关联,使得由于布尔高速缓存114的大小约束而只有与文档语料库对应的关键词子集被包括在布尔高速缓存114中。例如,可将对应于文档语料库以字母“A”开始的关键词至对应于该文档语料库以字母“D”开始的关键词包括在布尔高速缓存114中,而不将其他关键词包括在布尔高速缓存114中。
继续这一示例,如果该查询包括关键词“计算机”并且该查询未被包括在结果高速缓存110或索引高速缓存112中,则搜索组件104可确定这一关键词是否被包括在对应于布尔高速缓存114的范围中。在这一示例中,关键词“计算机”以字母“C”开始,并且由此被包括在布尔高速缓存114的范围中。搜索组件104随后可检查布尔高速缓存114以确定关键词“计算机”是否被包括在布尔高速缓存114所表示的关键词集中。如果在布尔高速缓存114的元素集中没有找到关键词“计算机”,则感兴趣的文档语料库中没有对应于这一关键词的文档,并且搜索组件104可经由显示器108向用户返回空结果集。如果搜索组件104确定关键词“计算机”被包括在布尔高速缓存114中,则至少一个文档与这一关键词对应,并且搜索组件104不能在计算设备100处本地完成该搜索。在这一情况下,搜索组件104可被配置成将该查询传送给可以访问较大索引的另一计算设备,使得可将搜索结果返回给用户。
尽管以上将搜索高速缓存106描述为包括结果高速缓存110、索引高速缓存112和布尔高速缓存114,但在某些情形中,这些高速缓存110、112或114中的一个或多个可被排除在搜索高速缓存106以外。例如,搜索高速缓存106可在空间方面受约束,并且可通过将索引高速缓存112和布尔高速缓存114包括在搜索高速缓存106中但从搜索高速缓存106中省略结果高速缓存110来优化或基本上优化在计算设备100上本地完成搜索的能力。搜索高速缓存106的特定内容可取决于与计算设备100对应的存储器约束以及搜索组件104期望搜索的文档语料库的大小(例如文档集中的文档数量)。
现在将描述特定实施例,其中计算设备100是移动计算设备,且期望搜索的文档语料库是跨用户的多个计算设备分布的。例如,用户可具有个人计算机、与工作有关的计算机、膝上型计算机和多个其他计算设备,并且文档可跨这些计算设备分布。如以下将更详细地描述的,协调器设备可创建全局索引,该全局索引使用这些文档的身份和位置来对文档的关键词进行索引。计算设备100可向协调器设备指示在计算设备100上对搜索高速缓存106可用的存储器中的空间量。协调器设备随后可根据这样的存储器约束来生成搜索高速缓存106,并将搜索高速缓存106传送给计算设备100,其中搜索高速缓存106可被保留在计算设备100的存储器中。用户随后可使用计算设备100来在跨多个计算设备分布的文档中执行搜索,而无需将查询传送给协调器设备或传送给用户的其他计算设备。搜索的局部性可减少计算设备100的电池使用,并且可在计算设备100不通过网络连接到协调器设备或用户的其他计算设备的情况下执行搜索的局部性。此外,由于可使用搜索高速缓存106来相对快速地计算搜索,因此与常规系统相比,交互式搜索较不被禁止。
例如,计算设备100可以是移动电话,该移动电话位于覆盖范围以外,但用户可仍然希望确定可能或可能不驻留在计算设备100上的一个或多个文档的位置。用户可向计算设备100提供查询,并且这一查询可由接收器组件102来接收。搜索组件104最初搜索结果高速缓存110以寻找该查询,并且如果该查询被包括在结果高速缓存110中则可经由显示器108向用户提供搜索结果。如果结果高速缓存110中未包括该查询,则搜索组件104可以搜索索引高速缓存112以寻找包括在该查询中的关键词。如果索引高速缓存112中包括该查询中的关键词,则搜索组件104可基于索引高速缓存112的内容经由显示器108向用户输出搜索结果。如果索引高速缓存112中未包括该查询中的关键词,则搜索组件104可访问布尔高速缓存114。如果布尔高速缓存114的范围中未包括该查询的关键词,则搜索组件104可发起网络连接且该查询可被传送给协调器设备,使得可在用户的文档的全局索引中执行搜索。如果一个或多个关键词在布尔高速缓存114的范围中,则搜索组件104可查明布尔高速缓存114是否包括该关键词。如果布尔高速缓存114指示布尔高速缓存114中不包括该查询的关键词,则搜索组件104可经由显示器108向用户指示不存在与用户所提交的查询相对应的文档。如果布尔高速缓存114指示布尔高速缓存114中包括该查询的至少一个关键词,则搜索组件104可发起网络连接且该查询可被传送给协调器设备或传送给用户的其他计算设备。
同样,这一体系结构本质上是示例性的,并且可以理解,可结合执行web搜索来利用搜索高速缓存106。例如,计算设备100可与搜索引擎进行通信。为减小搜索引擎的负载和/或为增加执行搜索的速度,搜索引擎可将搜索高速缓存106传送给计算设备100。由此,如果用户提供期望用于搜索web的内容的查询且结果高速缓存110中包括这一查询,则计算设备100上的搜索组件104可向用户返回搜索结果,而无需直接访问搜索引擎。类似地,如果索引高速缓存112和搜索高速缓存106中包括一个或多个关键词,则计算设备100需要请求搜索引擎在一个或多个服务器上执行搜索。
现在参考图2,示出了便于生成搜索高速缓存106的示例性系统200。系统200包括属于特定用户或由特定用户使用的多个计算设备202-204。如上所述,计算设备202-204可包括台式计算机,膝上型计算机,诸如多媒体播放器、移动电话之类的移动计算设备等。另外,计算设备202-204之一可以是以上描述的计算设备100。
系统200还包括协调器设备206。在一个示例中,协调器设备206可以是可通过合适的网络连接对于计算设备202-204可访问的云计算设备。在另一示例中,协调器设备206可以是用户拥有的或使用的计算设备,该用户拥有或使用计算设备202-204。由此,例如,协调器设备206可以是台式计算机、膝上型计算机等。
计算设备202-204中的每一个都可具有保留在其上的用户的文档。计算设备202-204可被配置成生成局部索引,这些局部索引对保留在相应计算设备202-204上的文档进行索引。例如,计算设备202可生成索引,该索引使用保留在计算设备202上的文档的身份和位置来对与这些文档对应的关键词进行索引,并且计算设备204可被配置成生成索引,该索引使用保留在计算设备204上的文档的身份和位置来对与这些文档对应的关键词进行索引。计算设备202-204可被配置成将这些局部索引传送给协调器设备206。
协调器设备206可包括全局索引确定者组件208,该全局索引确定者组件从计算设备202-204接收局部索引、并为跨计算设备202-204(且还可能在协调器设备206上)所保留的文档生成全局索引。即,全局索引确定者组件208可生成索引,该索引使用跨计算设备202-206分布的文档的身份和位置来对关键词进行索引。由此,驻留在协调器设备206上且被配置成执行对文档的搜索的模块可接收包括至少一个关键词的查询,并且可通过利用全局索引确定者组件208所生成的全局索引来标识与这一关键词对应的跨计算设备202-204的文档及其位置。
协调器设备206还包括高速缓存优化器组件210,该高速缓存优化器组件对要传送给计算设备202-204之中的计算设备100的搜索高速缓存106进行基本优化。例如,如以下将更详细地描述的,高速缓存优化器组件210可从计算设备100接收对搜索高速缓存106的大小约束,之后可至少部分基于计算设备100所提供的大小约束来生成搜索高速缓存106。高速缓存优化器组件210可通过分析全局索引确定者组件208所创建的全局索引、用户的搜索历史、以及对应于文档的其他数据来生成这一高速缓存。所得的搜索高速缓存106可由高速缓存优化器组件210来配置,以便在给定对搜索高速缓存106的大小约束的情况下,基本上最大化用户所期望执行的搜索可在计算设备100处被本地完成的概率。具体地,高速缓存优化器组件210可确定结果高速缓存110的大小和内容、索引高速缓存112的大小和内容、以及布尔高速缓存114的大小和内容,使得在给定搜索高速缓存106的大小约束的情况下、在计算设备110上本地完成搜索的概率被基本上最大化。
此外,协调器设备206可被配置成有时(例如,在已经对用户的文档作出改变之后且在计算设备100与协调器设备206连接之后)将对搜索高速缓存106的更新传送给计算设备100。如上所述,计算设备202-204可被配置成生成局部索引,这些局部索引使用其上的文档身份和位置来对关键词进行索引。然而,计算设备202-204的内容不保持静态。即,计算设备202-204的用户可创建新文档、删除文档、修改现有文档等等。计算设备202-204可被配置成更新其上的局部索引,并将这些更新传送给协调器设备206。更新可以是对这些索引的改变(增量),而不是整个索引。全局索引确定者组件208可至少部分基于对计算设备202-204所提供的局部索引的改变来更新全局索引。高速缓存优化器组件210可基于对全局索引的更改来执行后续优化,并且协调器设备206可将对搜索高速缓存106的更新传送给计算设备100。同样,协调器设备206不需要传送整个新的搜索高速缓存,而是可传送对计算设备100处的现有搜索高速缓存106的更新。
现在参考图3,示出了便于优化搜索高速缓存106并且便于向计算设备100提供这一搜索高速缓存106的示例性系统300。系统300包括协调器设备206。协调器设备206包括或可访问数据存储302,该数据存储包括由全局索引确定者组件208生成的全局索引304。系统300还包括计算设备100,该计算设备100通过诸如USB连接、网络连接之类的合适的通信连接与协调器设备206进行通信。计算设备100可能希望从协调器设备206接收搜索高速缓存,使得对多个不同计算设备中的文档的搜索可在计算设备100处本地进行,其中这一计算设备100可具有与其相关联的特定约束(例如,电池电量约束、存储约束等)。
计算设备100可将期望的搜索高速缓存大小传输给协调器设备206。对搜索高速缓存大小的传送可在计算设备100通过合适的通信链接与协调器设备206进行通信之后由计算设备100或协调器设备206来发起。例如,计算设备200可被配置成具有以下功能:允许计算设备100确定期望用于搜索高速缓存106的特定量的存储器(例如闪存)。
协调器设备206包括高速缓存优化器组件210,该高速缓存优化器组件210可在给定大小约束的情况下为计算设备100优化搜索高速缓存106。为执行这一优化,高速缓存优化器组件210可访问数据存储302以查看全局索引304、用户的搜索历史、以及可与针对跨计算设备的用户文档的搜索有关的任何其他数据。
高速缓存优化器组件210包括确定结果高速缓存110的大小的高速缓存大小确定者组件306,索引高速缓存112,以及期望传送给计算设备100的结果高速缓存114。根据一示例,计算设备100可指示为搜索高速缓存106分配1GB的存储器空间。高速缓存大小确定者组件306可确定结果高速缓存110的大小b、索引高速缓存112的大小a,并且由此布尔高速缓存114的大小为1GB-a-b。这些大小可例如基于对全局索引304和用户的搜索历史以及其他数据的分析探查来确定。
高速缓存优化器组件210还包括结果高速缓存确定者组件308,该结果高速缓存确定者组件308被配置成在给定高速缓存大小确定者组件306所输出的结果高速缓存110的大小的约束下,确定结果高速缓存110的内容。结果高速缓存确定者组件308可通过分析用户所提供的历史查询来确定结果高速缓存110的内容。例如,如果用户频繁地发出特定查询,则只要考虑到结果高速缓存110的大小约束,结果高速缓存确定者组件308就可使得这一查询和与其对应的搜索结果被放置在结果高速缓存中。
高速缓存优化器组件210可附加地包括索引高速缓存确定者组件310,该索引高速缓存确定者组件310在给定对索引高速缓存112的大小约束下可确定该索引高速缓存的内容。同样,索引高速缓存确定者组件310可通过分析全局索引304、对于全局索引304的命中率、与文档对应的关键词、用户的先前搜索等来确定索引高速缓存112的内容。此外,在修剪全局索引304以生成索引高速缓存112时,索引高速缓存确定者组件310可使用任何合适的技术。例如,索引高速缓存确定者组件310可利用已知技术来确保前k个搜索结果将与索引高速缓存112中所表示的关键词相对应。
高速缓存优化器组件210还可包括布尔高速缓存确定者组件312,该布尔高速缓存确定者组件312可至少部分基于对全局索引304、该用户或其他用户所提供的先前查询等的分析性分析来确定布尔高速缓存的内容。另外,布尔高速缓存确定者组件312可确定布尔高速缓存114的内容,同时考虑由高速缓存大小确定者组件306所输出的对布尔高速缓存114的大小约束。在某些情形中,高速缓存大小确定者组件306可输出约束,使得全局索引304中的所有关键词不能被包括在布尔高速缓存114中。布尔高速缓存确定者组件312可分析由用户进行的先前搜索中的关键词,并且可选择要包括在布尔高速缓存114中的特定范围的关键词,以便考虑高速缓存大小确定者组件306所输出的大小约束。例如,高速缓存大小确定者组件306可输出对布尔高速缓存的大小为250MB的限制。布尔高速缓存确定者组件312可查明布尔高速缓存114中仅可包括特定范围的关键词以便考虑这一大小约束。因此,例如,布尔高速缓存确定者组件312可选择将某一范围的关键词包括在布尔高速缓存114中(例如,以字母“D”开始的关键词至以字母“M”开始的关键词)。如上所述,这一范围可被选择以便基本最大化移动设备的用户所请求的搜索可在计算设备100处被本地完成的概率。可以理解,以上所描述的是用于确定搜索高速缓存的大小和内容的部分的示例性机制,并且发明人构想了用于基于用户历史和/或文档内容来确定这些大小和内容的任何合适的方式,并且这些方式旨在落入本文所附的权利要求书的范围之内。
尽管已将高速缓存优化器组件110描述为生成搜索高速缓存106来基本上最大化在计算设备100处进行的对文档的搜索可被本地完成的概率,但是可由高速缓存优化器组件进行的另一优化是基本上最小化关于执行搜索的成本。以下提供的是在确定搜索高速缓存106中高速缓存的大小时可由高速缓存优化器组件210进行基本最小化的成本函数的示例性公式。在以下提供的示例公式中,搜索高速缓存106仅包括索引高速缓存112和布尔高速缓存114。在这一公式中,l表示在索引高速缓存310中对查询的命中率。l的等式可被写成如下:
其中,a是被分配给索引高速缓存112的搜索高速缓存106的一部分,τ是分数s是全局索引304中的命中率且指示文档语料库中存在多少所搜索的项,以及α是分数索引高速缓存112的命中率与搜索高速缓存106的大小之间的依赖关系是上界由全局索引304中的命中率(s)界定的反指数。
此外,在这一公式中r可表示文档语料库中不能在索引高速缓存114中被容纳但在布尔高速缓存114中被表示的所有关键词的一部分,在适当条件下这可如下表达:
其中A是搜索高速缓存106的大小,B是全局索引304的大小,y是布尔高速缓存114中单词的平均大小,X是全局索引304中的单词的平均大小,以及x是搜索高速缓存106中的单词的平均大小。这一等式可按一般形式被重写成如下:
在等式(3)中,
以及(4)
是布尔高速缓存中单词的平均大小,其中p是与布尔高速缓存114(布隆过滤器)相关联的假肯定率。
此外,h可指示布尔高速缓存114中的命中率。由于可假设全局索引304中的命中率遵循均匀分布,因此h具有两个分量。布尔高速缓存114中的命中由正确匹配引起,而布尔高速缓存114中的命中由假肯定引起。因此,h(p,s)=s+(1-s)×p。
搜索高速缓存106中的遗漏的成本可由两个不同分量组成:1)在索引高速缓存112中且在布尔高速缓存114所表示的范围中不存在的遗漏;以及2)在索引高速缓存112中且在布尔高速缓存114所表示的范围中存在的遗漏以及在布尔高速缓存114中的命中。因此,成本c的等式可被公式化为如下:
c(a,p,τ,x,α,s)=(1-l(a,τ,s,α))×{r(a,p,τ,x,α)×h(p,s)+1-ra,p,τ,x,α (6)
在确定高速缓存的大小时,高速缓存大小确定者组件306可基本上最小化以上描述的成本函数。这可通过对全局索引304中的搜索历史进行分析性分析来确定。
现在转向图4,示出了便于搜索位于跨用户的多个计算设备的文档的示例性系统400。系统400包括与协调器设备206进行通信的计算设备100。如上所述,协调器设备206包括或可访问保留全局索引304的数据存储302。例如,全局索引304可包括与跨用户的计算设备的文档相对应的关键词、对应于这些关键词的文档的身份、以及这些文档的位置。
在图4中描绘的示例中,用户向计算设备100提供查询。搜索组件104至少部分基于查询的内容来对计算设备100中的搜索高速缓存106进行搜索。一般地,期望计算设备100能够通过利用搜索高速缓存106来本地执行搜索。然而,在某些情况下,可能无法通过利用搜索高速缓存106来回答用户所请求的搜索。例如,如果结果高速缓存110中不包括该查询、索引高速缓存112中不包括该查询的关键词、和/或布尔高速缓存114不能输出空结果集,则不能本地完成该搜索。在这一情况下,搜索组件104可被配置成发起与协调器设备206的网络连接,并且将用户所提供的查询传送给协调器设备206。协调器设备206可包括基于查询来搜索全局索引304的全局索引搜索组件402。全局索引搜索组件402可基于对全局索引304的搜索来确定结果集,其中该结果集可包括用户的计算设备上文档的身份和位置,且可导致搜索结果从协调器设备206被传送到计算设备100。用户随后可在计算设备100的显示器108上查看搜索结果。
现在参考图5-8,示出并描述了各种示例性方法。尽管各方法被描述为顺序地执行的一系列动作,但可以理解,这些方法不受该顺序的次序的限制。例如,一些动作能以与本文描述的不同的次序发生。另外,动作可以与另一动作同时发生。此外,在一些情况下,实现本文描述的方法并不需要所有动作。
此外,本文描述的动作可以是可由一个或多个处理器实现的和/或存储在一个或多个计算机可读介质上的计算机可执行指令。计算机可执行指令可包括例程、子例程、程序、执行的线程等。另外,这些方法的动作的结果可以存储在计算机可读介质中,显示在显示设备上,等等。计算机可读介质可以是非瞬时介质、诸如存储器、硬盘驱动器、CD、DVD、闪存驱动器等。
现在参考图5,示出了便于在搜索高速缓存106中执行搜索的示例性方法500。方法500在502处开始,并且在504处,在用户的计算设备100处接收查询。例如,该查询可被公式化为定位在用户的多个不同计算设备上驻留的文档。
在506处,响应于接收到该查询,访问搜索高速缓存106中的结果高速缓存110。例如,可将用户所提供的该查询与结果高速缓存110中的查询作比较。在508处,作出关于结果高速缓存110中是否已经有命中的确定(在结果高速缓存110中是否存在该查询)。如果已经有命中,则方法500前进至510,并且向用户输出搜索结果。可从结果高速缓存中检索这些搜索结果。
在508处,如果确定没有存在过命中,则在512处可访问索引高速缓存112。具体地,可分析索引高速缓存以确定在504处所接收的查询中的一个或多个关键词是否在索引高速缓存112中被表示。在514处,作出关于在使用该查询中的一个或多个关键词的索引高速缓存中是否已经有命中的确定。如果已经有命中,则在510处向用户输出与索引高速缓存中的关键词对应的搜索结果。如果在514处没有过命中,则在516处访问布隆过滤器。
如上所述,可将布隆过滤器限制于特定范围,诸如关键词的字母表范围。在518处,作出关于该一个或多个关键词是否在布隆过滤器的范围中的确定。如果确定这些关键词不在布隆过滤器的范围中,则在520处将该查询传送给协调器设备206,其中可利用这一查询来在全局索引304中搜索。如果该查询中的关键词在对应于布隆过滤器的范围中,则在522处作出关于该关键词是否在布隆过滤器中被表示的确定。如果确定该关键词在布隆过滤器中被表示,则方法500前进至520,在那里将查询传送给协调器设备以供在其上进行的搜索。如果关键词没有在布隆过滤器中被表示,则在524可向用户输出空结果集。方法500在526完成。
现在参考图6,示出了便于生成跨用户的计算设备的文档的全局索引的示例性方法600。方法600在602处开始,并且在604处从用户接收一个或多个计算设备的身份。例如,用户可使得每一计算设备与协调器设备进行通信,例如通过提供唯一标识的数据,用户可指示期望这些计算设备被包括在搜索/索引服务中。例如,用户可通过利用浏览器来访问特定网页,并且提供指示用户身份的数据。这可针对用户希望将其包括在搜索/索引服务中的每一计算设备来进行。
在606处,接收来自604处所标识的计算设备中的每一个的文档的局部索引。例如,计算设备可被配置成生成局部索引,这些局部索引使用保留在计算设备上的文档来对关键词进行索引。
在608处,生成跨用户的计算设备的文档的全局索引。因此,搜索这一全局索引可为跨多个计算设备的文档提供搜索结果。方法600在610完成。
现在参考图7,示出了便于计算搜索高速缓存并将其传送给计算设备的示例性方法700。方法700在702处开始,并且在704处,接收来自计算设备对搜索高速缓存的请求。在706处,确定搜索高速缓存的期望大小。例如,计算设备可输出描述搜索高速缓存的期望大小的数据。
在708处,确定要包括在搜索高速缓存中的结果高速缓存、索引高速缓存和布隆过滤器的期望大小。这些大小可通过对全局索引、用户所提供的先前搜索、对应于文档的关键词、文档语料库中的文档数量以及其他数据的分析性分析来查明。
在710处,结果高速缓存、索引高速缓存和布隆过滤器被生成以便在给定对搜索高速缓存的大小约束下使用搜索高速缓存来基本上最小化搜索的成本。在712处,将搜索高速缓存传送给计算设备,并且在714处方法700完成。
现在转向图8,示出了用于在移动计算设备上更新搜索高速缓存的示例性方法800。方法800在802处开始,并且在804处,从用户的至少一个计算设备接收对局部索引的更改。具体地,至少一个计算设备可被配置成首先生成局部索引并且将这一局部索引传送给协调器设备。然而,之后,计算设备可被配置成将对局部索引的改变传送给协调器设备,而不是传送整个局部索引。因此,协调器设备可从用户的多个计算机接收对局部索引的这些更改。
在806处,跨用户的多个计算设备的文档的全局索引是至少部分基于从用户的至少一个计算设备所接收的对局部索引的更改来更新的。具体地,用户可对计算设备上的文档进行添加、删除、修改、移动等,并且计算设备上的局部索引可被更新以指示文档的这一变换。随后可将这一改变传送给协调器设备,协调器设备可至少部分基于由计算设备所传送的对局部索引的改变来更新全局索引。如上所述,全局索引可考虑跨用户的多个计算设备的文档和/或由用户访问的文档,这些计算设备包括移动计算设备、台式计算设备、服务器、云存储设备等。此外,移动计算设备旨在包含移动电话、膝上型计算机、个人数字助理、多媒体播放器、移动游戏控制台以及之类的设备。
在808处,至少部分基于对文档的全局索引的更新来对移动计算设备上的搜索高速缓存进行更新。例如,协调器设备可传送对计算设备上现有搜索高速缓存的更改,而不是重传整个新的搜索高速缓存。因此,可向计算设备传送相对少量的数据来更新搜索高速缓存。该方法在810完成。
现在参考图9,示出了可以根据本文公开的系统和方法使用的示例性计算设备900的高级图示。例如,可在支持对用户的多个不同计算设备中的文档进行搜索的系统中使用计算设备900。在另一示例中,计算设备900的至少一部分可以用在支持生成搜索高速缓存的系统中。计算设备900包括执行存储在存储器904中的指令的至少一个处理器902。存储器904可以是或可以包括RAM、ROM、EEPROM、闪存、或其它适合的存储器。这些指令可以是例如用于实现被描述为由上述一个或多个组件执行的功能的指令或用于实现上述方法中的一个或多个的指令。处理器902可以通过系统总线906访问存储器904。除了存储可执行指令之外,存储器904还可存储结果高速缓存、索引高速缓存、布隆过滤器等。
计算设备900附加地包括可由处理器902通过系统总线906访问的数据存储908。数据存储908可以是或可以包括任何合适的计算机可读存储,包括硬盘、存储器等。数据存储908可包括可执行指令、搜索高速缓存、全局索引、历史用户搜索、文档、关键词等。计算设备900还包括允许外部设备与计算设备900进行通信的输入接口910。例如,可以使用输入接口910来从外部计算机设备、用户等接收指令。计算设备900还包括将计算设备900与一个或多个外部设备进行接口的输出接口912。例如,计算设备900可以通过输出接口912显示文本、图像等。
另外,尽管被示为单个系统,但可以理解,计算设备900可以是分布式系统。因此,例如,若干设备可以通过网络连接进行通信并且可共同执行被描述为由计算设备900执行的任务。
如此处所使用的,术语“组件”和“系统”旨在涵盖硬件、软件、或硬件和软件的组合。因此,例如,系统或组件可以是进程、在处理器上执行的进程、或处理器。另外,组件或系统可以位于单个设备上或分布在若干设备之间。此外,组件或系统可指存储器的一部分和/或一系列晶体管。
注意,出于解释目的提供了若干示例。这些示例不应被解释为限制所附权利要求书。另外,可以认识到,本文提供的示例可被改变而仍然落入权利要求的范围内。