具体实施方式
此处用细节来描述本发明的主题以满足法定要求。然而,该描述本身并非旨在限制本专利的范围。相反,发明人设想所要求保护的主题还可结合其他当前或未来技术按照其他方式来具体化,以包括不同的步骤或类似于本文中所描述的步骤组合。此外,尽管术语“步骤”和/或“框”可在此处用于指示所采用的方法的不同元素,但除非而且仅当明确描述了各个步骤的顺序时,否则该术语不应被解释为意味着此处公开的各个步骤之中或之间的任何特定顺序。
本发明涉及用于通过记录对可通过存储器内索引中的主倒排索引来进行搜索的文档内的内容的改变,来快速更新倒排索引中的元数据的系统、方法和计算机可读介质。
因此,在一个方面,本发明提供存储计算机可使用指令的一个或多个计算机可读介质,该计算机可使用指令在被一个或多个计算设备使用时使得该一个或多个计算设备执行一种方法。该方法包括接收更新文件,该更新文件提供已经发生了对与倒排索引相关联的一个或多个文档的内容的修改的指示。该方法还包括将更新文件发布给位于多个索引服务设备上的存储器内索引管理器,该存储器内索引管理器被配置成启动将更新文件应用于主存储器内索引的更新过程。该更新过程包括对于发布给存储器内索引管理器的每一更新文件,确定多个索引服务设备中的每一索引服务设备是否包含与该更新文件相对应的映射数据。该更新过程还包括对于包含与该更新文件相对应的映射数据的每一索引服务设备,从该更新文件提取与经修改的内容相关联的一个或多个文档的文档标识符。该更新过程还包括对于包含与该更新文件相对应的映射数据的每一索引服务设备,利用索引对象来查明经修改的内容的位置,该索引对象维护与倒排索引相关联的一个或多个文档之一的内容的位置的结构化记录。该更新过程还包括利用该更新文件、文档标识符,以及经修改的内容的位置,来更新主存储器内索引。该主存储器内索引被用来响应于一个或多个用户查询提供查询结果集合。
在本发明的另一实施方式中,一个方面是针对用于执行在线更新过程的计算机系统。如以下更全面地描述的,该计算机系统包括耦合到计算机存储介质的处理单元,其中该计算机存储介质存储可由该处理单元执行的多个计算机软件组件。计算机软件组件中的一些包括接收组件、发布组件、存储器内索引管理器,以及索引文件管理器。一般而言,接收组件被配置成接收更新文件,该更新文件提供已经发生了对与倒排索引相关联的一个或多个文档的内容的修改的指示。发布组件被配置成将更新文件推送到位于多个索引服务设备上的一个或多个存储器内管理器。在各实施方式中,多个索引服务设备中的每一个包括被配置成确定每一索引服务设备是否包含与所发布的更新文件相对应的映射数据的过滤组件。每一存储器内索引管理器被配置成启动对对应存储器内索引的更新过程,该存储器内索引维护对与倒排索引相关联的一个或多个文档的修改的记录。索引文件管理器被配置成利用来自存储器内索引和倒排索引两者的查询结果来响应于用户查询提供查询结果集合,该索引文件管理器将来自存储器内索引和倒排索引的查询结果进行归并,以生成响应于用户查询而提供的查询结果集合。
在又一个方面,本发明提供存储计算机可使用指令的一个或多个计算机可读介质,该计算机可使用指令在被一个或多个计算设备使用时使得该一个或多个计算设备执行一种方法。该方法包括接收用户查询。该方法还包括从倒排索引响应于用户查询提取主查询结果,该倒排索引位于多个索引服务设备上。在各实施方式中,该倒排索引是通过爬行预定网站范围内的所监视的文档集合来更新的。该方法还包括响应于该用户查询确定与多个索引服务设备相关联的存储器内索引包含次查询结果,该次查询结果包含对该倒排索引所覆盖的一个或多个文档的内容底层的元数据的最新近更新。该存储器内索引由一更新过程来更新,该更新过程包括接收提供已经发生了对与倒排索引相关联的一个或多个文档的内容的修改的指示的更新文件。该更新过程还包括将该更新文件发布给位于多个索引服务设备上的存储器内索引管理器。该更新过程还包括对于发布给存储器内索引管理器的每一更新文件,确定多个索引服务设备中的每一索引服务设备是否包含与该更新文件相对应的映射数据。该更新过程还包括对于包含与该更新文件相对应的映射数据的每一索引服务设备,从该更新文件提取与经修改的内容相关联的一个或多个文档的文档标识符。该更新过程还包括对于包含与该更新文件相对应的映射数据的每一索引服务设备,利用索引对象来查明经修改的内容的位置,该索引对象维护与倒排索引相关联的一个或多个文档之一的内容的位置的结构化记录。该更新过程还包括利用该更新文件、文档标识符,以及经修改的内容的相对位置,来更新存储器内索引。该方法还包括从该存储器内索引中提取次查询结果并将主查询结果与该次查询结果进行归并。该方法还包括呈现响应于用户查询的查询结果集合。
如本文所使用的,短语“倒排索引”和/或“主倒排索引”不意味着是限制性的,而是可涵盖任何形式的索引。在一种情况下,倒排索引是通过对该倒排索引所覆盖的文档进行web爬行和构建来生成的索引。如本文所使用的,短语“存储器内”索引是将经改变的项与该索引中的经修改的位置和元数据进行映射的索引。该存储器内索引可以经由随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪存或其他存储器技术。该存储器内索引还可使用与存储器不同的存储手段来实现。在各实施方式中,倒排索引中的每一项可具有与其相关联的元数据。例如,项“价格”可具有与其相关联的元数据,其中该元数据指示对象的价格。因此,存储器内索引组织并存储新更新的元数据。因此,在倒排索引中的对象的价格改变时,存储器内索引对经更新的价格元数据进行组织并临时存储在存储器内。
简要描述了本发明的各实施方式的概览之后,现在描述适于实现本发明的各实施方式的示例性操作环境。
概括地参考附图,并首先具体参考图1,示出了用于实现本发明的各实施方式的示例性操作环境,并将其概括地指定为计算设备100。计算设备100只是合适的计算环境的一个示例,并且不旨在对本发明的各实施方式的使用范围或功能提出任何限制。也不应该把计算环境100解释为对所示出的任一组件或其组合有任何依赖性或要求。
本发明的各实施方式可以在由计算机或诸如个人数据助理或其他手持式设备之类的其他机器执行的计算机代码或机器可使用指令的一般上下文中描述,该机器可使用指令包括诸如组件程序之类的计算机可执行指令。一般而言,包括例程、程序、对象、组件、数据结构等的组件程序指的是执行特定任务或实现特定抽象数据类型的代码。本发明的各实施方式可以在各种系统配置中实施,这些系统配置包括手持式设备、消费电子产品、通用计算机、专用计算设备等等。本发明也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实施。
继续参考图1,计算设备100包括直接或间接耦合以下设备的总线110:存储器112、一个或多个处理器114、一个或多个呈现组件116、输入/输出(I/O)端口118、I/O组件120、和说明性电源122。总线110可以是一条或多条总线(诸如地址总线、数据总线、或其组合)。虽然为了清楚起见利用线条示出了图1的各框,但是实际上,各组件的轮廓并不是那样清楚,并且比喻性地来说,线条更精确地将是灰色的和模糊的。例如,可以将诸如显示设备等的呈现组件认为是I/O组件。而且,处理器具有存储器。发明人认识到,这是本领域的特性,并且重申,图1的图示只是例示可结合本发明的一个或多个实施方式来使用的示例性计算设备。诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”等分类之间没有区别,它们全部都被认为是在图1的范围之内并且被称为“计算机”或“计算设备”。
计算设备100通常包括各种计算机可读介质。作为示例而非限制,计算机可读介质可以包括随机存取存储器(RAM);只读存储器(ROM);电可擦除可编程只读存储器(EEPROM);闪存或其他存储器技术;CDROM、数字多功能盘(DVD)或其他光或全息介质;磁带盒、磁带、磁盘存储或其他磁存储设备;或可用于对所需信息进行编码并且可由计算设备100访问的任何其他介质。
存储器112包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移动的、不可移动的、或其组合。示例性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等。计算设备100包括从诸如存储器112或I/O组件120等各种实体读取数据的一个或多个处理器。呈现组件116向用户或其他设备呈现数据指示。示例性呈现组件包括显示设备、扬声器、打印组件、振动组件等等。I/O端口118允许计算设备100在逻辑上耦合至包括I/O组件120的其他设备,其中某些设备可以是内置的。说明性组件包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、打印机、无线设备等等。
现在转向图2,示出了根据本发明的一实施方式的一个框图,它示出了被配置成生成经更新的存储器内索引的系统200。本领域普通技术人员可以理解和明白,图2中示出的系统200仅仅是一个合适的计算系统环境的示例并且不旨在对本发明的各实施方式的使用范围或功能提出任何限制。也不应该将系统200解释为对其中所示出的任何单个组件或各组件的组合有任何依赖性或要求。此外,系统200可作为独立产品、作为软件开发环境的一部分或其任何组合来提供。
系统200包括数据中心280内的一个或多个用户计算设备245、网络爬行器265、接收组件270、发布组件275以及一个或多个数据存储230,它们全部彼此通信。一般而言,示例性系统200的各组件(例如,网络爬行器265、接收组件270、发布组件275)可以通过相关领域中已知的任何方法来进行互连。在各实施方式中,提供网络220来促进数据存储230与数据中心280的计算设备245之间的通信。例如,数据存储230和数据中心280可以经由包括分布式通信环境的网络220在操作上相耦合。在一个示例中,网络220可以是无线的,并且可包括,但不限于,一个或多个局域网(LAN)和/或广域网(WAN)。这样的联网环境常见于办公室、企业范围计算机网络、内联网和因特网中。另外,更多组件(例如,BTS、设备等)可以在操作上耦合到无线网络220。
在又一些实施方式中,图2的网络220可以将组件210、260、265、270和275进行耦合,从而形成其中任务由通过适当的连接来链接的远程处理设备执行的分布式计算环境。这些连接可以通过有线技术、无线技术或其组合来建立。本发明的范围内的特定有线实施方式的示例包括USB连接和电缆连接。本发明的范围内的特定无线实施方式的示例包括近场无线网络和射频技术。应当理解和明白,“近场无线网络”的称呼不意味着是限制性的,而是应当广泛地包括至少以下技术:协商无线外围(NWP)设备;近程无线空中干扰网络(例如,无线个人区域网(wRAN)、无线局域网(wLAN)、无线广域网(wLAN)、蓝牙TM等);无线对等通信(例如,超宽带);以及支持设备之间的无线数据通信的任何协议。另外,熟悉本发明的领域的技术人员将认识到,近程无线网络可以通过与所示出的具体实施方式不同的各种数据传输方法(例如,卫星传输、电信网络等)来实施。因此,要强调的是,各组件之间的连接的实施方式不受所描述的示例的限制,而是涵盖各种各样的通信方法。
示例性系统200的分布式计算环境包括被配置成利用计算设备245中的一个或多个来容纳并支持组成程序210、260以及可任选地265、270和/或275的操作的数据中心280。本领域普通技术人员将理解和明白,图2所示的数据中心280仅仅是用于容纳组件程序中的一个或多个的一个合适示例,并且不旨在对本发明的各实施方式的使用范围或功能提出任何限制。也不应将数据中心280解释为对任何单个组件、组件组合、资源(未示出)、或用于访问资源的API集合(未示出)有任何依赖和要求。此外,尽管为了清楚起见用线条示出了图2的各个框,但是在实际上,各组件的轮廓并不是那样清楚,并且比喻性地来说,线条更精确地将是灰色的和模糊的。
此外,应当注意,本发明的各实施方式不限于在图2中示出的这些物理资源(例如计算设备245)上实现,而是可在处于其各实施方式的范围内的各种不同类型的计算设备、装备和组件程序中的任一种上实现。换言之,所示出的数据中心280的计算设备245描绘旨在用于讨论目的的示例性配置;因此,计算工业中已知的任何合适的计算设备布局以及其上常驻的组件程序的各实例都可以使用并且已被本发明构想到。
图2所示的计算设备245中的每一个都可以是任何类型的计算设备,诸如例如以上参考图1描述的计算设备100。仅作为示例而非限制,计算设备245中的每一个可以是服务器、个人计算机、处理刀片、服务器、台式计算机、膝上型计算机、手持式设备、移动手机、消费电子设备等。另外,计算设备245还可包括键盘、键区、指示笔、操纵杆以及允许用户访问网络220上的有线和无线数据的任何其他输入发起组件。然而,应当注意,本发明不限于在这些计算设备上实现,而是可在处于其各实施方式的范围内的各种不同类型的计算设备的任一种上实现。
在各实施方式中,每一计算机设备245是索引服务床内的索引服务机(ISM)。如此,每一计算机设备245提供由数据中心280提供的搜索系统索引的一部分。另外,计算设备245中的每一个可以配备便于通过由网络220支持的因特网和/或由数据中心280支持的内联网内的路径来接收消息的硬件。这些消息可包括与处理对维护在数据存储230处的文档225的修改和/或使用这些修改来更新存储器内索引相一致的通信。这些通信可以在连接的建立的开始或结束时传送,或在这两者之间的任何时间传送。另外,在计算设备245上部署能够以任何速度或以任何预定义的时间段传送消息的硬件。
通常,该硬件被配置成或被链接到某种形式的计算单元(例如,中央处理单元、微处理器等)以支持在其上运行的组件的操作。如本文所使用的,短语“通信单元”一般指的是具有处理能力和存储器的专用计算设备,它支持作为其上安装的应用程序和计算机程序的执行的基础的操作软件。在一种情况下,计算单元配置有有形硬件元素或机器,它们是集成的或在操作上耦合到执行更新相关过程(例如,更新过程、归并过程等)以及其他操作的每一设备。在另一情况下,计算单元可涵盖耦合到计算设备245所容纳的计算机可读介质的处理器。一般而言,计算机可读介质至少临时地存储可由处理器执行的多个计算机软件组件(例如,图2的组件210、260、265、270和/或275)。如本文所使用的,术语“处理器”不旨在是限制性的,并且可涵盖具有计算能力的计算单元的任何元素。在这种能力中,处理器可被配置成处理指令的有形物品。在一示例性实施方式中,处理可包括获取、解码/解释、执行、并写回指令(例如,将经更新的倒排索引或存储器内索引保存到计算机可读存储器)。
同样,除了处理指令外,处理器可以向集成到或部署在数据中心280上的其他资源(未示出)传送或从中传出信息。一般而言,资源指的是使数据中心280能够执行特定功能的软件和硬件机制。仅仅作为示例,资源可包括以下机制中的一个或多个:成像装置(例如,用户界面显示器);数据存储;打印设备;寻呼系统;音频警报设备;以及媒体显示单元。
数据存储230一般被配置成存储与文档225相关联的信息。在各实施方式中,文档225可包括但不限于元数据、文件(例如,网页)、文件夹、和/或与网站相关的数据。如本文描述的,元数据可以是描述文档225中的一个或多个的一部分的任何一段信息。例如,文档225之一的语言可以是元数据。一般而言,元数据是描述诸如网页文档等文档225中的任何类型的信息的数据。作为示例,元词语是描述文档的一个方面(例如,文档的特性、文档的元素、项、价格、字符、短语等)的词语。此外,元词语有时不位于或包括在文档225内,而是可以表示文档225内找到的元素或该文档的特性。其他元词语可包括但不限于语言(例如,web文档的语言)、位置(例如,web文档的起源的国家)或类型(例如,web文档的类型)。
另外,数据存储230可被配置成可被搜索以进行对所存储的信息的合适访问。例如,数据存储230可被搜索来寻找与文档225中的一个或多个相关联的一个或多个修改240、添加、或删除。本领域普通技术人员可以理解和明白,存储在数据存储230中的信息可以是可配置的,并且包括与经归并的倒排索引更新过程相关的任何信息。这样的信息的内容和量绝不旨在限制本发明的各实施方式的范围。此外,虽然被示为独立组件,但数据存储230事实上可以是多个数据库,例如,数据库集群,其中它的各部分可以驻留在计算设备245、搜索引擎(未示出)、另一外部计算设备,和/或其任何组合中的一个或多个上。
虽然本文频繁使用“web文档”,但它不旨在意味着限制本文描述的系统200的范围。即,系统200不限于只对web文档进行索引,而是还对由其他机制摄取的各种其他类型的文档进行索引。这些文档可由供应者提供或由与WWW不同的自动过程(例如,二进制数据堆、SQL数据堆、馈源等)来提供。此外,对这些文档的更新也可通过不同的机制来提供。
如图2所示,示例性系统200包括各种组成程序,如存储器内索引管理器210、索引文件管理器260、网络爬行器265、接收组件270以及发布组件275。在一些实施方式中,所示出的组件210、260、265、270和275中的一个或多个可被实现成独立应用程序。在其他实施方式中,所示出的组件210、260、265、270和275中的一个或多个可以直接集成到数据中心280的操作系统、数据存储230、和/或计算设备245的一个或多个中。作为示例,存储器内索引管理器210可以是索引文件管理器260的子组件。本领域普通技术人员可以理解,图2中示出的组件210、260、265、270和275在性质和数量上是示例性的并且不应被解释为是限制性的。可以采用任何数量的组件来实现本发明的各实施方式范围内的所需功能。
在操作中,示例性系统200的各组件执行下文讨论的功能中的一个或多个。然而,本发明的各实施方式不限于所描述的具体功能,而是可包括实现以下组件功能所获得的结果的替换过程。一开始,可以对存储在数据存储230中的一个或多个上的文档225中的一个或多个进行修改240。在一种情况下,修改240可被应用于文档225的内容。这一类型的修改240通常包括网站管理员235或掌握对文档225的管理控制的任何其他实体发起的改变。作为示例,对文档225进行的修改240可以包括更改在线发布的网页内的至少一个项。例如,该项可以是与基于零售的网页处的待售物品相关联的价格值。
虽然描述了对文档225的修改240的若干不同的配置,但本领域普通技术人员应当理解和明白,可以使用(有编辑文档225的权限的实体手动地/自动地采用的)造成对文档225的任何部分(例如,文档225的内容和项底层的元数据)的更改的其他类型的合适技术,并且本发明的各实施方式不限于本文描述的这些修改240。
网络爬行器265一般被配置成在执行检查过程时发现并表达对文档225的修改240的指示。一开始,网络爬行器265可以经由网络220来访问文档。或者,网络爬行器265可以部分地分布到数据存储230中的一个或多个上,或者可以是在不读取文档225的情况下远程地监视修改240的独立元件。在一种情况下,检查过程包括爬行落入可经由倒排索引搜索的预定网站范围内的所监视的文档集合内的文档225。在另一情况下,检查过程包括检测修改240,如调整文档集合内的文档225的内容底层的元数据。可以利用相关领域的普通技术人员知道的任何分析过程来执行对修改240的检测。作为示例,可以通过将先前高速缓存的文档版本与数据存储230当前所维护的文档225进行比较来实现检测,以发现并定位任何不一致。此外,网络爬行器265所执行的检查过程可以按规则的时间间隔、按预定义的时间段、以实时的方式(例如,由访问并编辑文档225的内容的网站管理员235来触发)或促进对修改240的有效检测的任何其他方式来执行。
在网络爬行器265爬行文档集合并对其执行检查过程时,可以检测修改240。在一示例性实施方式中,在检测到修改240时(例如,识别出网站中的各项已被改变),网络爬行器265可以将修改240通知给发布组件275。在一些实施方式中,网络爬行器还可以指示修改240在接收到该改变的文档225内的相对位置。
在又一情况下,接收组件270可被配置成接收并表达对文档225的修改240的指示。例如,在一个实施方式中,接收组件可以从网站管理员235接收更新文件。该更新文件可以提供已经发生了对数据存储230的文档225的内容的修改240的指示。因此,接收组件270可以经由网络220接收更新文件,而无需网络爬行器265爬行文档225以搜索对数据存储230的内容的修改240。在接收到更新文件之后,接收组件270可以将修改240通知给发布组件275(例如,识别出网站中的各项已被改变)。
在被通知了修改240之后,发布组件275可以将该修改通知给存储器内索引管理器210。在一种情况下,发布组件275可以将接收到的关于修改240的数据发送给数据中心280的每一计算设备245。作为示例,发布组件275可以将更新文件205推送到数据中心280的每一计算设备245。
存储器内索引管理器210可以位于计算机设备245上。在一实施方式中,数据中心280的每一计算机设备245包括便于更新每一相应计算机设备245的存储器内索引的存储器内索引管理器210。在另一实施方式中,存储器内索引管理器210可以是索引文件管理器的组件。存储器内索引管理器210可以启动将修改240应用于存储器内索引的更新过程。更新索引服务设备245上的存储器内索引可包括需要将与更新文件205和修改240相关的信息处理成可被应用于该存储器内索引的格式的各个过程。在各实施方式中,该信息包括被修改的数据(例如,项、内容、底层元数据等)、修改240的特性(例如,在文档225中的相对位置),以及接收修改240的文档225的标识。在各实施方式中,文档225的标识可包括以下一个或多个:URL、网页地址、数据存储225的网站的位置、或与修改240的源相关联的数据。
在从发布组件275接收到所发布的更新文件205之后,存储器内索引管理器210可以启动将所发布的更新文件205的修改应用于存储器内索引的更新过程。存储器内索引管理器210可被安装在数据中心280的计算设备245(例如,索引服务床内的索引服务器机器(ISM))上。该更新过程可涉及各种过程,这些过程包括将与修改240相关的信息封装成可被应用于存储器内索引的格式(参见图3的附图标记330)。在各实施方式中,该信息包括被修改的数据(例如,项、内容、底层元数据等)、修改240的特性(例如,在文档225中的相对位置、经修改文档的版本)以及接收修改240的文档225的标识。
一开始,更新过程可包括确定接收到所发布的更新文件205的计算机设备245是否包含与所发布的更新文件205相对应的映射数据。具体而言,每一计算机设备245提供数据中心280所提供的全局索引的一部分。因此,给定计算机设备245的更新过程包括确定检索到的更新文件205是否适用于该计算机设备245所提供的全局索引的这一部分。在各实施方式中,所发布的更新文件205可包括包含URL和对项和/或与经更改的文档225相关联的相关元数据的改变的数据。在接收到所发布的更新文件205后,存储器内索引管理器210可以启动过滤过程以确定更新文件205中包含的修改是否适用于该对应计算机设备245所提供的索引的这一部分。过滤步骤可包括计算机设备245的存储器内索引管理器210将由所发布的更新文件205指示为被修改了的文档的URL与同存储在该计算机设备245上的映射数据相关联的URL进行比较。用于更新索引元数据的传统系统和方法通常包括划分从更新文件接收到的数据发布管理器并分发与特定索引服务器机器相关的相应数据部分。在发布管理器处的数据划分可以造成更新系统中的瓶颈并妨碍对更新数据的快速发现。在各实施方式中,发布组件275可以将更新文件205发布给数据中心280的所有索引服务设备245,然而只有提供与所发布的更新文件205相关联的数据的那些计算机设备245才在过滤步骤之外继续对更新文件205进行进一步处理。通过利用若干ISM 245来并行地进行更新数据的划分,可以减少从发布更新到在倒排索引中反映该更新的时间。更新过程还可包括对于包含与更新文件205相对应的映射数据的每一计算机设备245,从更新文件205提取经更改的文档225的文档标识符。在各实施方式中,文档225的标识可包括以下一个或多个:URL、网页地址、数据存储225的网站的位置、或与修改240的源相关联的数据。
更新过程甚至还可包括使用索引对象来确定修改240在文档225(例如,发布的网页)的内容内的相对位置。索引对象可以维护数据存储230中的文档225的内容的位置的结构化记录。在一种情况下,计算机设备245的存储器内索引管理器210可以访问维护最新映射时间表的独立服务和/或内部模式,该时间表将经更改的文档225的URL或网页地址与相关联的文档225的唯一标识符相匹配。如此,映射时间表可被用来将与所发布的更新文件相关联的URL或网页地址转录成手动地文档标识符。这一文档标识符连同经修改内容的相对位置可以与来自更新文件205的信息一起被用来更新存储器内索引。
在各实施方式中,在从标识符解译出经更改内容225的网页地址或URL后,更新过程还可包括利用该网页地址或URL来从修改240的相对位置导出该经更改内容在所监视的文档集合内的绝对位置。可以至少临时地将修改240的这一绝对位置(在该组文档内的全局位置)保存到存储器内索引。在其他实施方式中,将数据保存到存储器内索引可以包括将更新文件205所传送的修改240作为经更新的内容、项或元数据加上该内容、项或元数据的绝对位置一起输入到存储器内索引。
存储器内索引的格式基本上可类似于倒排索引的格式。然而,该存储器内索引格式只是使用已改变的那些项的各方面(增量信息)来填充的。在一种情况下,利用更新文件205填充到存储器内索引的格式中的项的各方面包括经更改文档225的标识、修改240的特性(例如,新的底层元数据)、以及修改240发生在文档225内的什么位置(例如,相对位置)。虽然利用与修改240相关联的具体数据集(例如,更新文件205)来创建存储器内索引的条目,如以上在示例性实施方式中讨论的,但相关领域普通技术人员可以明白和理解,可以使用描述并定位对数据存储225的内容的修改240的其他数据集。
参考图3,现在将讨论更新过程305的一实施方式。一般而言,图3描绘示出了用于执行根据本发明的一实施方式的更新过程305的示例性计算设备245的框图300。应当理解,本文描述的这一安排以及其他安排只是作为示例来阐明的。其他安排和元素(例如,机器、接口、功能、次序、以及功能编组)可以作为所示出的这些安排和元素的补充或替换,并且一些元素可以一起省略。此外,本文描述的元素中的许多是可被实现为分立或分布式组件,或者结合其他组件一起实现并且以任何合适的组合且在任何合适的位置实现的功能实体。本文描述的由一个或多个实体执行的各种功能可以通过硬件、固件和/或软件来实现。例如,各种功能可以由执行存储在存储器中的指令的处理器来实现。
如图所示,存储器内索引管理器210利用存储在计算机设备245上的映射信息335和从所发布的更新文件205提取的信息来得到经更新的存储器内索引330。更新过程305可以在从发布组件275接收到更新文件205时实时地实现、以循环时间帧来实现,或以任何其他预定义时间段来实现。经更新的存储器内索引330可被提交给索引文件管理器260。在接收到经更新的存储器内索引330后,索引文件管理器260可以执行关联过程310,关联过程310一般被设计成将经更新的存储器内索引330与已有倒排索引编组在一起以用于搜索目的。
在各实施方式中,如上所述,在只将诸如经更新的元数据等对与倒排索引340相关联的文档集合的最新近修改应用于经更新的存储器内索引330后,生成经更新的存储器内索引330。因为并未替换整个倒排索引340,并且因为只将经更新的信息存储在经更新的存储器内索引330中,而经更新的信息在许多情况下可以是整个倒排索引340的非常小的一部分,所以更新过程305是保存处理时间和资源的智能操作。通过利用分布在若干计算机设备245之间的映射信息335,对文档的元数据的改变的通知可被快速地发布给若干计算机设备245,而无需处理元数据更新来确定负责提供与该更新相关联的数据的计算机设备245。在一个实施方式中,计算机设备245可以从所发布的更新文件205过滤相关信息。如此,通过在不进行大量的预发布处理的情况下向大量机器分发更新文件,将实现用于在倒排索引中反映经更新的元数据的更快的周转时间。
因此,除了更频繁地将经更新的存储器内索引330与倒排索引340进行关联之外,本发明的各实施方式的更新过程305可被更频繁地调用。利用经更新的存储器内索引330配合倒排索引340,从而提供响应于并且反映对与倒排索引340相关联的文档集合的改变的最新的经更新的搜索索引。
这一示例性实现中,更新过程305可被配置成使用相关联的文档标识和相关联的数据(诸如元词语值和该元词语的位置),来更新经更新的存储器内索引330中的对应的元词语。在这一实现中,如上所述,特定元词语可能位于需要通过使用位置信息来更新的经更新的存储器内索引330内。更新过程305可以递归地定位具有相关联的经更新的信息的每一元词语。在其他情况下,更新过程可包括生成包含经更新的元词语的新存储器内索引,并移除指向旧存储器内索引的指针。如此,经更新的存储器内索引330与倒排索引340的关联过程310将包括新生成的存储器内索引330而不包括旧存储器内索引。如此,本发明的各实施方式不用新信息替换整个倒排索引340,而是可以通过生成经更新的存储器内索引330来一次更新任何数量的元词语。例如,可以在存储器内索引330中更新一个元词语,同时倒排索引340中的其他信息可以不改变。
回到图2,在各实施方式中,索引文件管理器260被设计成以规则的间隔(例如,每小时、每天、每星期等),或在更新文件管理器260知道经更新的存储器内索引330时,实时地实现关联过程310。在各实施方式中,索引文件管理器260被设计成,在接收到与存储器内索引的数据相关的搜索查询时,实现倒排索引与经更新的存储器内索引的关联。如此,应当理解,更新过程和关联过程可以在实现中相链接,或可被独立地触发。在完成更新过程之后,创建经更新的存储器内索引330。经更新的存储器内索引330可被传达给不同地位于整个数据中心280的其他存储器内索引管理器210。数据中心280中的这些位置可以与各行机器相对应,其中每一行机器具有倒排索引的完整副本。
在各实施方式中,在接收到所发布的更新文件205时,存储器内索引管理器210被提供给多个计算设备245中的一个或多个内的存储器内索引330。在各实施方式中,存储器内索引管理器210被安装在多个计算设备245(例如:各行机器)中的至少一个上。在各实施方式中,存储器内索引管理器210被配置成通过在替换存储器内索引的各部分时保持ISM在线来保存计算设备245的web搜索功能。在各实施方式中,维护用持续传入的元数据更新来进行更新的额外存储器内索引。换言之,计算机设备245可以维护两个存储器内索引。在使用传入更新来更新经更新的存储器内索引时,已有存储器内索引被用来响应于用户查询来提供数据。伴随着关联过程310,经更新的存储器内索引周期性地替换配合倒排索引被提供的已有存储器内索引。即,如本文所描述的,进行更新过程允许频繁修改存储器内索引而无需使服务机器离线。如此,用户将在数分钟内看到对与倒排索引所覆盖的内容相关联的元数据(例如,产品的价格、折扣)的更新。在更新过程的另一实施方式中,经更新的存储器内索引被加载在已有倒排索引旁边。在各实施方式中,在用户发起的搜索期间,经更新的存储器内索引优先于已有倒排索引。
如本文所使用的,短语“倒排索引”不被解释为限制性的,并且可涵盖可以用查询来进行搜索并一般可被用来发现在某一方面与该查询相关的内容的项安排。在一种情况下,倒排索引被组织成在接收到来自用户的查询时可被搜索以寻找所监视的文档集合内的内容的索引。在这种情况下,与书籍的索引类似,倒排索引列出接收到的每一元词语。对于接收到的每一元词语,倒排索引可以列出与元词语相关联的每一文档标识。除列出每一相关联的文档标识之外,还可列出每一元词语的相关联的数据。
参考图3,在获取了经更新的存储器内索引330之后,可以按该次序来与倒排索引340相关联地利用经更新的存储器内索引330来高效地搜索倒排索引340的范围内的文档集合以寻找内容。即,对该组文档的最近改变被方便地合并到经更新的存储器内索引330中。因此,用户经由搜索引擎350发起的在线搜索一般将产生当前搜索结果(例如,与销售物品相关联的最近价格值),搜索引擎350可在操作上耦合到经更新的存储器内索引330和倒排索引340。在在线搜索的一个实施方式中,搜索引擎350会将对文档中的一个或多个中包含的特定信息的查询325传递到经更新的存储器内索引330,随后传递到倒排索引340,其中倒排索引340进而提供反映经更新的元数据的搜索结果320。
经更新的存储器内索引的大小可通过周期性地(例如,每小时、每天、每星期等)重构主倒排索引340来进行控制。作为示例,与计算设备245相关联的倒排索引340可以通过执行倒排索引340的每天索引归并来重新生成,这可包括重新爬行倒排索引所覆盖的文档。在重构主倒排索引时,存储器内索引330的累积更新可因为对与倒排索引340相关联的文档的改变而被重新处理。在存储器内索引的这一重构期间,较旧元数据更新数据可被丢弃并且存储器内索引大小可以减小。
现在参考图4,提供了示出根据本发明的一实施方式的用于更新存储器内索引的方法400的流程图。一开始,如在框410所示,出于存储器索引更新目的,接收更新文件作为输入。更新文件可以经由文件云来从网站管理员接收。更新文件可被表示为具有密钥/数据文件格式。密钥文件可以是具有URL和偏移的文本文件。偏移可包括特定URL的数据在数据文件中的偏移。更新文件还可包括具有头部的包装器文件,该头部封装有密钥和数据文件两者。更新文件的包装文件的头部可包含与该更新(例如,元词、元流)相关联的源内容的元数据。如在框420所示,将更新文件发布给位于一个或多个ISM上的存储器内索引管理器。如在框430所示,对于发布给存储器内索引管理器的每一更新文件,确定接收该更新文件的ISM设备是否包含与该更新文件相对应的映射数据。确定映射信息是否与更新文件相对应可以基于更新文件的头部与ISM机器上的映射数据之间的比较。映射数据可以是包含已查看URL(seenURL)块的索引对象的形式,其中已查看URL块包括特定URL到唯一文档标识符的映射。该文档标识符可被用来确定文档在倒排索引中的真实位置。如在框440所示,从更新文件提取与更新文件相关联的标识符以及对与倒排索引相关联的文档的修改的底层的元数据的表示。如上所述,标识符可包括URL。另外,如在框450所示,可通过将更新文件与包含已查看URL块的索引对象进行联合来获取经修改内容的相对位置。在框460,可以使用更新文件、文档标识符,以及经修改内容的相对位置,来更新存储器内索引。更新存储器内索引可包括将更新文件的修改底层的元数据的表示(例如,URL、时间戳、数据)和文档标识映射信息转换成与倒排索引类似的格式。
现在参考图5,提供了示出根据本发明的一实施方式的用于使用倒排索引和更新存储器内索引来提供搜索结果的方法500的流程图。如在框510所示,接收用户查询作为输入。该用户查询可以是对与倒排索引相关联的文档中的一个或多个中包含的特定信息的查询。如在框520所示,响应于该用户查询,从倒排索引中提取响应于该用户查询的主搜索结果。如在框530所示,作出关于与倒排索引相关联的存储器内索引是否包含响应于用户查询的次查询结果的判定。从存储器内索引获得的次查询结果包含对倒排索引所覆盖的文档的内容底层的元数据的最新更新。如上所述,可以更新存储器内索引。
如果在框540确定存储器内索引确实包含响应于用户查询的查询结果,则如在框550所示,从存储器内索引提取次查询结果。如在框560所示,归并分别来自存储器内索引和倒排索引的次和主查询结果。在该实施方式中,因为次查询结果包含对被搜索文档的底层的元数据的最新更新,在次和主查询结果重叠的情况下,来自存储器内索引的次查询结果优先于来自倒排索引的主查询结果。例如,次查询结果可以对应于主查询结果中的产品的经更新的价格。因此,次查询结果中的经更新的价格而非来自主查询结果的过期价格被用于归并数据中。如在框570所示,将响应于用户查询的查询结果的已归并集合呈现给用户。
如果在框540确定存储器内索引不包含响应于用户查询的查询结果,则如在框570所示,呈现来自倒排索引的主查询结果。
现在参考图6,提供了示出根据本发明的一实施方式的用于使用倒排索引和更新存储器内索引来提供搜索结果的另外方法600的流程图。如在框610所示,接收用户查询作为输入。可将用户查询并行地发送到主倒排索引和存储器内索引。如在框620所示,响应于该用户查询,从倒排索引中提取响应于该用户查询的主搜索结果。如在框630所示,从存储器内索引提取响应于用户查询的次搜索结果。如在框640所示,作出关于来自主倒排索引和存储器内索引的搜索结果是否重叠的判定。
如果在框640确定来自主倒排索引的主搜索结果和来自存储器内索引的次搜索结果重叠或相交,则如在框650所示,来自存储器内索引的次结果取代来自主倒排索引的主搜索结果。在该实施方式中,因为次查询结果包含对被搜索文档的底层的元数据的最新更新,在次和主查询结果重叠的情况下,来自存储器内索引的次查询结果优先于来自倒排索引的主查询结果。如在框660所示,将响应于用户查询的查询结果集合呈现给用户。
如果在框640确定来自主倒排索引的主搜索结果和来自存储器内索引的次搜索结果重叠或相交,则如在框660所示,呈现响应于用户查询的查询结果集合。响应于用户查询的查询结果集合可只包含来自倒排索引的主查询结果。如可理解的,本发明的各实施方式提供用于更新存储器内索引的系统和方法。参考各具体实施方式描述了本发明,各具体实施方式在所有方面都旨在是说明性的而非限制性的。不偏离本发明范围的情况下,各替换实施方式对于本发明所属领域的技术人员将变得显而易见。
从前面的描述可以看出,本发明很好地适用于实现上文所阐述的所有目的和目标,并且具有对于该系统和方法是显而易见且固有的其他优点。也可理解特定的特征和子组合是有用的,并且可以加以利用而无需参考其他特征和子组合。这由权利要求所构想的,并在权利要求的范围内。