CN102542052B - 优先散列索引 - Google Patents

优先散列索引 Download PDF

Info

Publication number
CN102542052B
CN102542052B CN201110449840.2A CN201110449840A CN102542052B CN 102542052 B CN102542052 B CN 102542052B CN 201110449840 A CN201110449840 A CN 201110449840A CN 102542052 B CN102542052 B CN 102542052B
Authority
CN
China
Prior art keywords
hashed value
memory location
inverted list
item
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201110449840.2A
Other languages
English (en)
Other versions
CN102542052A (zh
Inventor
K.M.里斯维克
M.霍普克罗夫特
J.G.贝内特
K.卡尔亚纳拉曼
T.基林比
沈徽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102542052A publication Critical patent/CN102542052A/zh
Application granted granted Critical
Publication of CN102542052B publication Critical patent/CN102542052B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/325Hash tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

优先散列索引为搜索查询项提供倒排列表的有效查找。优先散列索引是其中用于项的散列值基于这些项的重要性和存储设备的访问速度而被分布在多个存储设备上的数据结构。项被组合到搜索列表中,其中每一个搜索列表包括每一个存储设备上的存储位置。当接收到搜索查询时,项被识别并被散列到第一存储设备上的位置,并且为该项生成独特的散列值。存储设备上用于该项的搜索列表的位置被顺序读取,直至定位用于该项的散列值来访问用于该项的倒排列表。

Description

优先散列索引
背景技术
因特网上可用的信息和内容的数量继续快速增长。考虑到大量的信息,开发了搜索引擎来便于搜索电子文档。特别地,用户可以通过输入包括对用户而言可能感兴趣的一个或多个项的搜索查询来搜索信息和文档。在接收到来自用户的搜索查询之后,搜索引擎基于搜索查询来识别相关的文档和/或网页。由于其实用性,网络搜索即对于用户发出的搜索查询而查找相关的网页和文档的处理现今可以说已变成因特网上最受欢迎的服务。
搜索引擎通过抓取(crawl)文档以及在搜索索引中为与这些文档相关的信息编制索引来操作。搜索索引时常包括用于在所抓取的文档中找到的各个项的倒排列表(postinglist)。每一个倒排列表识别其中找到特定项的文档。当接收到搜索查询时,搜索引擎采用搜索索引来识别与搜索查询相关的文档。以这种方式使用搜索索引允许快速检索用于查询的信息。如果没有搜索索引,搜索引擎将需要搜索文档集来找到相关结果,而这将花费不可接受的时间量。
在执行搜索时,搜索引擎通常采用各种机制来提供搜索查询项的快速查找,以便定位和检索倒排列表。基于树的结构和内存中的散列表是用于这个目的的常见方法的示例。但是,这些现有机制在扩展到非常大量的索引对象时并不是真正有效的,并且查找性能未必是足够的。
发明内容
提供这个概述部分来以简化的形式介绍下面在具体描述部分中进一步描述的概念的选择。这个概述部分并不旨在标识所请求保护主题的关键特征或基本特征,也不旨在用作确定所请求保护主题的范围的辅助手段。
本发明的实施例涉及为搜索查询项提供倒排列表的有效查找的优先散列索引。优先散列索引是其中用于项的散列值基于项重要性而被分布在从最快存储设备到最慢存储设备的具有不同访问速度的存储设备层次上的数据结构。一些存储设备包括条目,其中每一个条目包括具有倒排列表的地址的散列值。在一些实例中,如果倒排列表是足够小的,那么倒排列表被内联(inline)存储。此外,如果该层次中的存储设备具有明显的输入/输出等待时间(例如,硬盘驱动器)以致多次访问该设备将显著影响性能,那么可以将倒排列表内联存储在存储设备上。例如,在一些实施例中,该层次中较高的存储设备可以存储各自包括具有倒排列表的地址的散列值的条目,而最终的存储设备可以与散列值一起内联存储倒排列表。项被组合到搜索列表中,其中每一个搜索列表包括每一个存储设备上用于存储搜索列表中的项的散列值的位置。当接收到搜索查询时,项被识别并被散列,以选择第一设备上的位置和生成对于该项而言是独特的散列值。用于该项的搜索列表的存储设备的位置被顺序读取,以定位与该散列值相匹配的条目和访问用于该项的倒排列表。
附图说明
下面参考附图来详细描述本发明,其中:
图1是适合于在实现本发明的实施例中使用的示例计算环境的框图;
图2是说明根据本发明的实施例用于搜索索引的优先散列索引的图示;
图3是其中可以采用本发明的实施例的示例***的框图;和
图4是显示根据本发明的实施例用于使用优先散列索引来访问搜索索引中的数据的方法的流程图。
具体实施方式
本发明的主题在此处利用特异性来描述以满足法定要求。但是,该描述本身并不旨在限制这个专利的范围。相反,发明人已考虑:结合其他的现在或未来的技术,所请求保护的主题也可以采用其他的方式来体现,以包括不同的步骤或与这个文档中所描述的相类似的步骤的组合。此外,虽然在这里可以使用术语“步骤”和/或“方框”来暗示所采用的方法的不同元素,但是除非且除了明确地描述个别步骤的顺序之外,这些术语不应被解释为暗示在这里披露的各个步骤之中或之间的任何特定顺序。
本发明的实施例涉及优先散列索引,其是驻留在若干层的存储设备上的数据结构,用于提供搜索索引中项的倒排列表的有效查找。应该注意:“项(term)”在这里被宽泛地用来指示在利用搜索索引进行索引的文档中找到的单个词或多个词(例如,短语、n字尾(n-gram)、n元组等等)。
优先散列索引围绕为利用搜索***索引进行索引的项的群组提供“搜索列表”来构造。概念地,搜索列表是被分布在每一个存储设备的存储位置上的列表结构。每一个搜索列表中的项被散列为独特的数字,而从这些独特的数字中导出两个散列值。用于搜索列表中的所有项的第一散列值在第一存储设备上选择相同的位置,其中所述位置用作搜索列表中的起点。第二散列值消除搜索列表中的各个项的歧义,并且基于项重要性(从最高到最低)被存储在从最快存储设备到最慢存储设备的不同存储设备中。项重要性可以基于诸如与该项相关联的倒排列表的长度或访问统计信息之类的因素。
在本发明的一些实施例中,较高层的存储设备(即,较快的存储设备)存储各自一般包括用于项的散列值以及用于项的倒排列表的地址的数据条目。在一些实例中,如果倒排列表是短的,那么可以与散列值一起内联存储倒排列表。相反,较低层(或最低层)的存储设备(即,一个或多个最慢的存储设备)包括各自一般包括用于项的散列值的数据条目,其中用于该项的倒排列表被内联存储。特别地,如果该层次中的存储设备具有显著的输入/输出等待时间(例如,硬盘驱动器)以致多次访问该设备将显著影响性能,那么倒排列表可以被内联存储在那个存储设备上。
在操作中,在接收到搜索查询时,识别和散列项,以导出两个散列值。第一散列值选择第一存储设备中的存储位置。该存储位置被读取,以确定它是否包含用于第二散列值的数据条目。如果在该存储位置上找到包括第二散列值的数据条目,则用于该项的倒排列表的地址从该数据条目中进行检索并被用于访问倒排列表。例如,第一存储设备可以是RAM,而倒排列表被存储在硬盘驱动器中。这样,存储在RAM上的地址与硬盘驱动器上存储用于该项的倒排列表的位置相对应。
如果第一存储设备上的存储位置不包含第二散列值,该处理通过检索在该层次的存储设备中的下一个存储设备上的存储位置的地址来继续。下一个存储设备上的存储位置包含搜索列表的延续。该处理可以通过顺序读取该层次中的存储设备上的存储位置来继续,直至定位第二散列值。如果在最后存储设备的存储位置上找到第二散列值,则倒排列表与第二散列值内联存储。这样,将只需要访问一次最后的存储设备(即,最慢的存储设备)来访问倒排列表。
相应地,在一个方面中,本发明的实施例涉及用于为搜索引擎存储优先散列索引的***。该***包括第一类型的第一数据存储设备。第一数据存储设备具有多个存储位置,其中第一数据存储设备上的第一存储位置存储多个数据条目,其中每一个条目包括与项相对应的散列值以及定位用于该项的倒排列表的地址。第一存储位置也存储第二数据存储设备上的第二存储位置的地址。第二数据存储设备具有第二类型并且具有多个存储位置,其中第二数据存储设备上的第二存储位置存储多个数据条目,其中每一个数据条目包含与项相对应的散列值以及定位用于该项的倒排列表的地址。第二存储位置也存储第三数据存储设备内的第三存储位置的地址。第三数据存储设备具有第三类型并且具有多个存储位置,其中第三数据存储设备上的第三存储位置存储多个数据条目,其中每一个数据条目包含与项相对应的散列值以及用于该项的倒排列表。
在另一实施例中,本发明的一个方面涉及用于访问搜索索引中的数据的方法。该方法包括:接收与搜索查询中的搜索项相对应的散列值。该方法也包括:识别第一存储设备上的第一存储位置,以及确定散列值是否存储在第一存储位置上。如果散列值存储在第一存储位置上,则该方法包括从第一存储位置中检索倒排列表的地址以及使用那个地址来访问倒排列表。如果散列值没有存储在第一存储位置上,则该方法包括从第一存储位置检索第二存储设备上的第二存储位置的地址。该方法随后包括确定是否散列值存储在第二存储位置上。如果散列值存储在第二存储位置上,那么该方法包括从第二存储位置检索倒排列表的地址以及使用那个地址来访问倒排列表。如果散列值没有存储在第二存储位置上,那么该方法包括从第二存储位置检索第三存储设备上的第三存储位置的地址。该方法随后包括确定散列值是否存储在第三存储位置上。如果散列值没有存储在第三存储位置上,则该方法包括确定放弃搜索该散列值。如果散列值存储在第三存储位置上,那么该方法包括从第三存储位置访问倒排列表。
本发明的进一步实施例涉及一个或多个存储计算机可用指令的计算机存储媒体,其中计算机可用指令当被计算设备使用时导致计算设备执行方法。该方法包括:接收搜索查询;识别搜索查询中的项;以及散列该项,以生成第一散列值和第二散列值。该方法也包括:识别RAM中与第一散列值相对应的缓存线,该缓存线包含多个数据条目,其中每一个数据条目包括与给定项相对应的散列值以及用于给定项的倒排列表的地址。该方法进一步包括:确定缓存线是否包含第二散列值。如果缓存线包含第二散列值,则该方法包括从缓存线中检索与第二散列值相对应的倒排列表的地址以及使用那个地址来访问倒排列表。如果缓存线不包含第二散列值,那么该方法包括从缓存线中检索包含多个数据条目的基于闪存的固态设备中的页面的地址,其中每一个数据条目包括与给定项相对应的散列值以及用于给定项的倒排列表的地址。该方法随后包括确定是否该页面包含第二散列值。如果该页面包含第二散列值,那么该方法包括从该页面中检索与第二散列值相对应的倒排列表的地址以及使用那个地址来访问倒排列表。如果该页面不包含第二散列值,那么该方法包括采用存储在该页面中的布隆过滤器。如果第二散列值没有通过布隆过滤器,那么该方法包括确定放弃搜索第二散列值。如果第二散列值通过布隆过滤器,那么该方法包括从该页面检索包含多个数据条目的硬盘驱动器中的页面文件的地址,其中每个数据条目包括与给定项相对应的散列值以及用于给定项的倒排列表。该方法随后包括确定是否该页面文件包含第二散列值。如果该页面文件不包含第二散列值,那么该方法包括确定放弃搜索第二散列值。如果该页面文件包含第二散列值,那么该方法包括从该页面文件中访问与第二散列值相对应的倒排列表。
已描述了本发明的实施例的概述之后,下面描述其中可以实现本发明的实施例的示例操作环境,以便为本发明的各个方面提供一般上下文。特别地,最初参考图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、EEPROM、闪存或其他存储技术、CD-ROM、数字多用途碟片(DVD)或其他光盘存储设备、磁带盒、磁带、磁盘存储设备或其他磁存储设备或任何其他的能够用于存储所需信息并能够被计算设备100访问的介质。通信媒体一般在诸如载波或其它传送机制之类的调制数据信号中包括计算机可读指令、数据结构、程序模块或其它数据。术语“调制数据信号”表示其特征中的一个或多个特征采用编码信号中的信息的方式进行设置或改变的信号。通过示例而非限制,通信媒体包括有线媒体诸如有线网络或直接有线连接以及无线媒体诸如声学、RF、红外和其它无线媒体。以上任何的组合也应该被包括在计算机可读媒体的范围之内。
存储器112包括采用易失性和/或非易失性存储器形式的计算机存储媒体。该存储器可以是可移动的、不可移动的或其组合。示例的硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等等。计算设备100包括一个或多个处理器114,其从诸如存储器112或I/O组件120之类的各个实体中读取数据。一个或多个呈现组件116将数据指示呈现给用户或其他设备。示例的呈现组件包括显示设备、扬声器、打印组件、振动组件等等。
I/O端口118允许计算设备100逻辑地耦合到包括I/O组件120的其他设备,其中的一些设备可以是内置的。说明性的组件包括麦克风、操纵杆、游戏手柄、卫星碟形天线、扫描仪、打印机、无线设备等等。
现在转到图2,提供说明根据本发明的实施例用于搜索索引的优先散列索引的图示。如先前所指示的,优先散列索引是有助于用于搜索查询中提交的项的倒排列表的有效查找的数据结构。图2所示的优先散列索引驻留在三个存储设备即RAM202、基于闪存的固态设备(SSD)204以及硬盘驱动器(HDD)206上。应该注意:在本发明的实施例的范围之内可以采用其他类型的存储设备。此外,虽然图2说明遍布在三个存储设备上的优先散列索引,但是根据本发明的各个实施例的优先散列索引可以采用两个或更多的存储设备。
根据本发明的实施例,利用搜索索引进行索引的项被组合到“搜索列表”中。每一个搜索列表包括利用搜索索引进行索引的项的一部分并被存储在三层的存储设备上:即RAM202、SSD204以及HDD206。例如,图2说明是搜索列表的一部分的许多项208。这些项208均被散列成独特的散列值。在本发明的各个实施例内可以采用各种不同的散列函数中的任何一个。通过示例而非限制,可以采用MD4散列函数。
在实施例中,对这些项进行散列提供两个散列值。这两个散列值可以是单独的值,或可以是利用散列函数生成的较大散列值的部分。第一散列值用于识别搜索列表,而第二散列值用于消除每一个搜索列表中的各个项的歧义。
作为说明,用于项208的群组中的每一个项的第一散列值选择RAM202中的缓存线210。这样,缓存线210用作用于项208的群组的搜索列表的入口点。RAM202中的每一个其他的缓存线用作包括利用搜索索引进行索引的不同集合项的不同搜索列表的入口点。
用于项208的群组的第二散列值基于这些项的重要性而被遍布在从最快的存储设备到最慢的存储设备的三层存储设备上。例如,用于最重要项的散列值存储在RAM202中,用于下一最重要项的散列值存储在SSD204上,而用于最不重要项的散列值存储在HDD206上。项的重要性在本发明的各个实施例中可以基于许多因素。例如,项的重要性可以基于用于这些项的倒排列表的长度。特别地,较长的倒排列表可以表示更大的重要性。项的重要性也可以基于与每一个项响应于搜索查询而被历史访问的频率相关的访问统计信息。被更频繁访问的项可以被认为是更重要的。在一些实施例中,项重要性可以基于排名函数(例如,BM25f排名函数或通用排名函数F(a,q)=(0..1))。
如图2所示,RAM202中的缓存线210包括多个数据条目212。每一个数据条目包括散列值以及用于与那个散列值相对应的项的倒排列表的地址。在一些实施例中,倒排列表可以存储在HDD206的不同位置上,并且每一个数据条目的地址可以与HDD上存储倒排列表的位置相对应。在图2所示的示例中,缓存线210包括用于十个散列值的数据条目。这些散列值与搜索列表中十个最重要的项相对应。
缓存线210也包括SSD204上的位置216(例如,页面)的地址214。SSD204上的位置216包括开始于RAM202的缓存线210上的搜索列表的延续。如图2所示,位置216包括许多数据条目218。每一个数据条目包括散列值以及与散列值相对应的项的倒排列表的地址。在一些实施例中,倒排列表可以存储在HDD206的不同位置上,并且每一个数据条目的地址可以与HDD206上存储倒排列表的位置相对应。在图2所示的示例中,位置216包括用于244个散列值的数据条目。这些散列值与在缓存线210中存储的前十个项之后的下一个最重要的项相对应。
SSD204上的位置216也存储布隆过滤器220。布隆过滤器可以基于存储在HDD206中的搜索列表的剩余散列值来构造。SSD204上的位置216进一步包括HDD206上的位置224(例如,页面文件)的地址222。HDD224上的位置224包括从存储在SSD204的位置216上的数据条目开始继续的搜索列表的延续。如图2所示,HDD224上的位置224包括许多数据条目226。每一个数据条目包括散列值以及用于与那个散列值相对应的项的倒排列表。换句话说,倒排列表与散列值一起内联存储在HDD224上,这与在RAM202和SSD204上存储地址相反。在图2所示的示例中,位置216包括用于1240个散列值的数据条目。这些散列值与搜索列表中最不重要的项相对应。
在一些实施例中,短的倒排列表可以内联存储在RAM202和/或SSD204中。特别地,如果存储在RAM202或SSD204上的项的倒排列表短于某个阈值以致它将不会消耗过多的存储空间,那么可以将倒排列表与用于该项的散列值一起存储在RAM202或SSD204上,这与将倒排列表存储在别处并证明在RAM202或SSD204上的地址相反。这在短的倒排列表的情况下避免寻找HDD206。
在操作中,当接收到搜索查询时,项被识别并被散列,以生成第一和第二散列值。例如,用于项208的群组中的项的第一散列值将选择缓存线210作为搜索列表的入口点。缓存线上的数据条目被读取,以确定其是否包含用于该项的第二散列值。如果是的话,则与存储的散列值相关联的倒排列表地址用于访问用于该项的倒排列表。如果否的话,则SSD地址214从缓存线210中进行检索并被用于访问SSD204上的位置216。存储在SSD204的位置216上的数据条目被读取,以确定其是否包含第二散列值。如果是的话,则具有存储的散列值的倒排列表地址用于访问用于该项的倒排列表。如果否的话,则检查布隆过滤器220,以确定第二散列值是否有可能被HDD206上的搜索列表的延续所包含。在这一点上使用布隆过滤器,这是因为下一步骤将是访问HDD206,这与访问RAM202和SSD204相比是极其缓慢的。如果第二散列值未通过布隆过滤器,则第二散列值不存储在HDD206上,并且该处理被放弃。这样,避免针对HDD206的不必要访问。作为替换,如果第二散列值通过布隆过滤器,则HDD地址222从SSD204上的位置216中进行检索并被用于访问HDD206上的位置224。存储在HDD206的位置224上的数据条目226被读取,以确定其是否包含第二散列值。如果是的话,则访问与第二散列值相关联存储的倒排列表。因为用于存储在HDD206上的散列值的倒排列表与散列值一起内联存储,所以只需要访问一次HDD206来定位散列值和检索对应的倒排列表。如果数据条目226不包含第二散列值,那么该处理被放弃,这是因为该项没有被搜索***索引。
相应地,图2的优先散列索引说明跨越RAM202、SSD204和HDD206的三层数据结构。这允许有界搜索来利用至多一次短的SSD读取和一次短的HDD读取来找到(turnup)倒排列表。
接下来参考图3,提供说明其中可以采用本发明的实施例的示例***300的框图。应该明白:这里描述的这种以及其他安排仅仅作为示例来阐述。除了所显示的之外或替代所显示的,还能够使用其他的安排和元素(例如,机器、接口、功能、命令和功能的分组等等),并且某些元素可以一起被省略。进一步,这里描述的许多元素是功能实体,其中这些功能实体可以被实现为分立组件或分布式组件或与其他组件相结合来实现,并且可以在任何合适的组合和位置中进行实现。在这里被描述为由一个或多个实体执行的各种功能可以利用硬件、固件和/或软件来完成。例如,各种功能可以通过处理器运行存储在存储器中的指令来完成。
除了未显示的其他组件之外,***300可以包括用户设备302、内容服务器304和搜索引擎服务器306。例如,图3所示的每一个组件可以是任何类型的计算设备,诸如参考图1所描述的计算设备100。这些组件可以经由网络308彼此通信,其中网络可以包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是司空见惯的。应该明白:在本发明的范围内在***300内可以采用任何数量的用户设备、内容服务器和搜索引擎服务器。每一个可以包括在分布式环境中协作的单个设备或多个设备。例如,搜索引擎服务器306可以包括安排在分布式环境中共同提供在这里描述的搜索引擎服务器306的功能的多个设备。此外,在***300内也可以包括未显示的其他组件。
搜索引擎服务器306一般操作来接收来自诸如用户设备302之类的用户设备的搜索查询,并响应于搜索查询来提供搜索结果。特别地,搜索引擎服务器306包括索引组件310、用户界面组件312和索引访问组件314。
索引组件310操作来索引与诸如内容服务器304之类的内容服务器所保持的文档相关的数据。例如,抓取组件(未显示)可以被采用来抓取内容服务器和访问与内容服务器所保持的文档相关的信息。索引组件310随后在搜索索引316中索引与抓取的文档相关的数据,这包括用于该文档中所识别的项的倒排列表。在实施例中,索引组件310也生成优先散列索引,用于搜索索引中项的有效查找。如前所讨论的,优先散列索引被遍布在多种类型的存储设备上。例如,在一个实施例中,优先散列索引存储在RAM、基于闪存的SSD和HDD上。用于项的散列值基于项的重要性而被存储在存储设备上,其中更重要项的散列值首先填充最快的存储设备,而不太重要的项的散列值存储在较慢的存储设备上。
用户界面组件312给诸如用户设备302之类的用户设备提供界面,其中该界面允许用户向搜索引擎服务器306提交搜索查询并接收来自搜索引擎服务器306的搜索结果。用户设备302可以是用户采用来提交搜索查询并接收搜索结果的任何类型的计算设备。通过示例而非限制,用户设备302可以是台式计算机、膝上型计算机、平板计算机、移动设备或其他类型的计算设备。用户设备302可以包括允许用户输入搜索查询并提交搜索查询给搜索引擎服务器306以检索搜索结果的应用。例如,用户设备302可以包括网络浏览器,其中该浏览器包括搜索输入框或允许用户访问搜索页面来提交搜索查询。用于向搜索引擎提交搜索查询的其他机制被考虑是在本发明的实施例的范围之内的。
当经由用户界面组件312接收到搜索查询时,从搜索查询中识别一个或多个项。索引访问组件314随后操作来在搜索索引316中识别用于每一个项的倒排列表。索引访问组件314采用由索引组件310生成的优先散列索引来识别其上存储用于每一个项的倒排列表的位置。在实施例中,索引访问组件314散列项,以识别第一存储设备上的位置和生成用于识别该项的倒排列表的散列值。索引访问组件310顺序访问存储优先散列索引的每一个存储设备,直至定位用于该项的散列值,并且随后检索对应的倒排列表(除非未索引该项,在这种情况下,该处理被放弃)。
由索引访问组件314为接收到的搜索查询中的项所检索的倒排列表用于为搜索查询生成搜索结果。这些搜索结果随后可以利用用户界面组件312被传送到用户设备302,以便这些搜索结果可以被呈现给提交该搜索查询的终端用户。
现在参考图4,提供说明根据本发明的实施例用于经由优先散列索引访问搜索索引中的数据的方法400的流程图。最初,如方框402所示,由搜索引擎接收搜索查询。该搜索查询可以包括一个或多个项。如方框404所示,至少一个项被识别,以便进一步处理。在方框406,通过对该项应用散列函数来散列该项。在本发明的各个实施例中可以采用各种不同的散列函数中的任何一种。通过示例而非限制,可以采用MD4散列函数。
在方框406散列项的处理可以包括生成两个散列值。在一个实施例中,生成大的散列值,从这个大的散列值中生成两个较小的且不相关的散列值。仅通过示例而非限制,可以生成72比特散列,从中可以导出包含24比特的第一散列值和包含48比特的第二散列值。第一散列值可以用于识别搜索列表,而第二散列值可以用于消除搜索列表中的多个条目的歧义。
如方框408所示,第一散列值用于识别第一存储设备内的存储位置。在一个实施例中,第一存储设备是RAM,而存储位置是该RAM中的缓存线。该存储位置包括许多数据条目,其中每一个数据条目包括散列值和倒排列表的地址。
如方框410所示,在第一存储设备上所识别的存储位置被读取,以确定其是否包含为该项确定的第二散列值。如果在方框412确定第一存储设备上的存储位置包含第二散列值,那么如方框414所示从第一存储设备上的存储位置中检索与第二散列值一起存储的地址。该地址与用于该项的倒排列表相对应。这样,如方框416所示,用于该项的倒排列表被访问。如方框418所示,倒排列表用于生成搜索结果。如方框420所示,响应于原始搜索查询,提供这些搜索结果,以便返回给终端用户。
如果在方框412确定第一存储设备上的存储位置不包含第二散列值,那么如方框422所示从第一存储设备上的存储位置中检索第二存储设备上的存储位置的地址。在一个实施例中,第二存储设备是基于闪存的固态设备,而存储位置是基于闪存的固态设备上的页面。第二存储设备上的存储位置也包括许多数据条目,其中每一个数据条目包括散列值和倒排列表的地址。
如方框424所示,在第二存储设备上所识别的存储位置被读取,以确定其是否包含为该项确定的第二散列值。如果在方框426确定第二存储设备上的存储位置包含第二散列值,那么如方框428所示从第二存储设备上的存储位置中检索与第二散列值一起存储的地址。该地址与用于该项的倒排列表相对应。这样,如方框430所示,用于该项的倒排列表被访问。如方框432所示,倒排列表用于生成搜索结果。如方框434所示,响应于原始搜索查询,提供这些搜索结果,以便返回给终端用户。
如果在方框426确定第二存储设备上的存储位置不包含第二散列值,那么如方框436所示检查存储在第二存储设备的存储位置上的布隆过滤器,以确定搜索列表的延续是否有可能包含第二散列。如果在方框438确定第二散列值未通过布隆过滤器,则在方框440放弃该访问处理,这是因为在搜索索引中没有为该项编制索引。作为替换,如果第二散列值在方框438通过布隆过滤器,那么从第二存储设备上的存储位置中检索第三存储设备上的存储位置的地址,如方框442所示。在一个实施例中,第二存储设备是硬盘驱动器,并且存储位置是硬盘驱动器上的页面文件。第三存储设备上的存储位置包括许多数据条目,其中每一个数据条目包括散列值和对应的倒排列表。
如方框444所示,在第三存储设备上所识别的存储位置被读取,以确定其是否包含为该项确定的第二散列值。如果在方框446确定第三存储设备上的存储位置不包含第二散列值,则在方框448放弃该访问处理,这是因为在搜索索引中没有为该项编制索引。作为替换,如果在方框446确定第三存储设备上的存储位置包含第二散列值,那么与第二散列值相关联存储在第三存储设备的存储位置上的倒排列表被访问,如方框440所示。如方框442所示,倒排列表用于生成搜索结果。如方框444所示,响应于原始搜索查询,提供这些搜索结果,以便返回给终端用户。
如能够明白的,本发明的实施例提供一种优先散列索引,其允许对于搜索查询中的项的倒排列表的有效查找,以便响应于搜索查询而生成搜索结果。
已结合特定实施例描述了本发明,其中这些特定实施例在所有方面都旨在说明性而非限制性的。对于本发明所涉及的领域中的普通技术人员来说,在不脱离本发明的范围的情况下,可选择的实施例将变得明显。
鉴于前述的,这个发明适合于实现上面阐述的所有目的和目标以及对于所述***和方法而言是明显的且固有的其他优点。将明白:某些特征和子组合具有实用性并且可以被采用而无需参考其他的特征和子组合。这被权利要求书所考虑并被包含在权利要求书的范围之内。

Claims (20)

1.一种用于为搜索引擎存储优先散列索引的***,所述***包括:
第一类型的第一数据存储设备,第一数据存储设备具有多个存储位置,其中第一数据存储设备上的第一存储位置存储多个数据条目,其中每一个数据条目包含与项相对应的散列值以及定位用于所述项的倒排列表的地址,第一存储位置也存储第二数据存储设备上的第二存储位置的地址;
第二类型的第二数据存储设备,第二数据存储设备具有多个存储位置,其中第二数据存储设备上的第二存储位置存储多个数据条目,其中每一个数据条目包含与项相对应的散列值以及定位用于所述项的倒排列表的地址,第二存储位置也存储第三数据存储设备内的第三存储位置的地址;以及
第三类型的第三数据存储设备,第三数据存储设备具有多个存储位置,其中第三数据存储设备上的第三存储位置存储多个数据条目,其中每一个数据条目包含与项相对应的散列值以及用于该项的倒排列表。
2.如权利要求1所述的***,其中第一数据存储设备是RAM,并且其中第一存储位置是缓存线。
3.如权利要求1所述的***,其中第二数据存储设备是基于闪存的固态设备,并且其中第二存储位置是页面。
4.如权利要求1所述的***,其中第三数据存储设备是硬盘驱动器,并且其中第三存储位置是页面文件。
5.如权利要求1所述的***,其中散列值基于与所述散列值相关联的项的重要性而被存储在从最快速存储设备到最慢速存储设备的第一、第二和第三存储设备上。
6.如权利要求4所述的***,其中项的重要性基于用于所述项的倒排列表的长度来确定。
7.如权利要求4所述的***,其中项的重要性基于用于所述项的倒排列表的访问频率来确定。
8.如权利要求1所述的***,其中第一存储设备上的第一存储位置包括至少一个包含散列值和倒排列表的数据条目。
9.如权利要求1所述的***,其中第二存储设备上的第二存储位置包括至少一个包含散列值和倒排列表的数据条目。
10.如权利要求1所述的***,其中第二存储设备上的第二存储位置也包括布隆过滤器。
11.一种用于访问搜索索引中的数据的方法,所述方法包括:
接收与搜索查询中的搜索项相对应的第二散列值;
识别第一存储设备上的第一存储位置;
确定是否所述第二散列值存储在第一存储位置上;
如果所述第二散列值存储在第一存储位置上,则从第一存储位置中检索倒排列表的地址并使用那个地址来访问倒排列表;
如果所述第二散列值没有存储在第一存储位置上,则从第一存储位置中检索第二存储设备上的第二存储位置的地址;
确定是否所述第二散列值存储在第二存储位置上;
如果所述第二散列值存储在第二存储位置上,则从第二存储位置中检索倒排列表的地址并使用那个地址来访问倒排列表;
如果所述第二散列值没有存储在第二存储位置上,则从第二存储位置中检索第三存储设备上的第三存储位置的地址;
确定是否所述第二散列值存储在第三存储位置上;
如果所述第二散列值没有存储在第三存储位置上,则确定放弃搜索所述第二散列值;以及
如果所述第二散列值存储在第三存储位置上,则从第三存储位置中访问倒排列表。
12.如权利要求11所述的方法,其中所述搜索项对应于两个散列值,所述第二散列值和第一散列值,其中第一存储设备上的第一存储位置基于与所述搜索项相对应的所述第一散列值来识别。
13.如权利要求11所述的方法,其中倒排列表被访问,并且其中所述方法进一步包括:
使用倒排列表,生成搜索结果;以及
响应于搜索查询,提供搜索结果,以便呈现给终端用户。
14.如权利要求11所述的方法,其中第一数据存储设备是RAM,并且第一存储位置是缓存线,其中第二数据存储设备是基于闪存的固态设备,并且第二存储位置是页面,以及其中第三数据存储设备是硬盘驱动器,并且第三存储位置是页面文件。
15.如权利要求11所述的方法,其中多个散列值基于与所述散列值相关联的项的重要性而被存储在从最快速存储设备到最慢速存储设备的第一、第二和第三存储设备上。
16.如权利要求14所述的方法,其中项的重要性基于从以下选择的至少一项来确定:用于所述项的倒排列表的长度;以及用于所述项的倒排列表的访问频率。
17.如权利要求11所述的方法,其中在所述第二散列值没有存储在第二存储位置上时从第二存储位置中检索第三存储设备上的第三存储位置的地址包括:检查存储在第二存储位置上的布隆过滤器,并确定所述第二散列值通过所述布隆过滤器。
18.一个用于访问搜索索引中的数据的方法,该方法包括:
接收搜索查询;
识别搜索查询中的项;
散列所述项,以生成第一散列值和第二散列值;
识别与第一散列值相对应的RAM中的缓存线,所述缓存线包含多个数据条目,其中每一个数据条目包括与给定项相对应的散列值以及用于所述给定项的倒排列表的地址;
确定是否所述缓存线包含第二散列值;
如果所述缓存线包含第二散列值,则从所述缓存线中检索与第二散列值相对应的倒排列表的地址,并使用那个地址来访问倒排列表;
如果所述缓存线不包含第二散列值,则从所述缓存线中检索包含多个数据条目的基于闪存的固态设备中的页面的地址,其中每一个数据条目包括与给定项相对应的散列值以及用于所述给定项的倒排列表的地址;
确定是否所述页面包含第二散列值;
如果所述页面包含第二散列值,则从所述页面中检索与第二散列值相对应的倒排列表的地址,并使用那个地址来访问倒排列表;
如果所述页面不包含第二散列值,则采用存储在所述页面中的布隆过滤器;
如果第二散列值没有通过布隆过滤器,则确定放弃搜索第二散列值;
如果第二散列值通过布隆过滤器,则从所述页面中检索包含多个数据条目的硬盘驱动器中的页面文件的地址,其中每一个数据条目包括与给定项相对应的散列值以及用于所述给定项的倒排列表;
确定是否所述页面文件包含第二散列值;
如果所述页面文件不包含第二散列值,则确定放弃搜索第二散列值;以及
如果所述页面文件包含第二散列值,则从所述页面文件中访问与第二散列值相对应的倒排列表。
19.如权利要求18所述的方法,其中第一散列值和第二散列值是单个散列值的部分。
20.如权利要求18所述的方法,其中倒排列表被访问,并且其中所述方法进一步包括:
使用倒排列表,生成搜索结果;以及
响应于搜索查询,提供搜索结果,以便呈现给终端用户。
CN201110449840.2A 2010-12-29 2011-12-29 优先散列索引 Expired - Fee Related CN102542052B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/980582 2010-12-29
US12/980,582 US8626781B2 (en) 2010-12-29 2010-12-29 Priority hash index

Publications (2)

Publication Number Publication Date
CN102542052A CN102542052A (zh) 2012-07-04
CN102542052B true CN102542052B (zh) 2016-01-06

Family

ID=46348931

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110449840.2A Expired - Fee Related CN102542052B (zh) 2010-12-29 2011-12-29 优先散列索引

Country Status (2)

Country Link
US (1) US8626781B2 (zh)
CN (1) CN102542052B (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9152404B2 (en) 2011-07-13 2015-10-06 Z124 Remote device filter
US20130268559A1 (en) * 2011-07-13 2013-10-10 Z124 Virtual file system remote search
US20130268703A1 (en) 2011-09-27 2013-10-10 Z124 Rules based hierarchical data virtualization
US8762396B2 (en) * 2011-12-22 2014-06-24 Sap Ag Dynamic, hierarchical bloom filters for network data routing
US9230548B2 (en) 2012-06-06 2016-01-05 Cypress Semiconductor Corporation Hybrid hashing scheme for active HMMS
US9672274B1 (en) * 2012-06-28 2017-06-06 Amazon Technologies, Inc. Scalable message aggregation
US8700583B1 (en) 2012-07-24 2014-04-15 Google Inc. Dynamic tiermaps for large online databases
GB201306035D0 (en) * 2013-04-03 2013-05-22 King Com Ltd Method and system for data cash handling
US20140325160A1 (en) * 2013-04-30 2014-10-30 Hewlett-Packard Development Company, L.P. Caching circuit with predetermined hash table arrangement
CN103440249A (zh) * 2013-07-23 2013-12-11 南京烽火星空通信发展有限公司 一种非结构化数据快速检索的***及方法
US9734062B2 (en) 2013-12-13 2017-08-15 Avago Technologies General Ip (Singapore) Pte. Ltd. System and methods for caching a small size I/O to improve caching device endurance
CN103780508B (zh) * 2014-02-20 2018-10-16 北京经纬恒润科技有限公司 Can总线报文的软件滤波方法、***及电子控制单元
US20160321366A1 (en) * 2015-04-30 2016-11-03 Linkedln Corporation Constrained-or operator
CN106257450B (zh) * 2015-06-19 2019-09-17 杭州海康威视数字技术股份有限公司 集群***的文件定位、存储方法和装置
US10467215B2 (en) 2015-06-23 2019-11-05 Microsoft Technology Licensing, Llc Matching documents using a bit vector search index
US11392568B2 (en) 2015-06-23 2022-07-19 Microsoft Technology Licensing, Llc Reducing matching documents for a search query
US10229143B2 (en) 2015-06-23 2019-03-12 Microsoft Technology Licensing, Llc Storage and retrieval of data from a bit vector search index
US11281639B2 (en) 2015-06-23 2022-03-22 Microsoft Technology Licensing, Llc Match fix-up to remove matching documents
US10565198B2 (en) 2015-06-23 2020-02-18 Microsoft Technology Licensing, Llc Bit vector search index using shards
US10242071B2 (en) 2015-06-23 2019-03-26 Microsoft Technology Licensing, Llc Preliminary ranker for scoring matching documents
US10733164B2 (en) 2015-06-23 2020-08-04 Microsoft Technology Licensing, Llc Updating a bit vector search index
WO2017185210A1 (zh) * 2016-04-25 2017-11-02 华为技术有限公司 一种使用布隆过滤器过滤文件的方法及装置
US11010300B2 (en) 2017-05-04 2021-05-18 Hewlett Packard Enterprise Development Lp Optimized record lookups
CN107545047B (zh) * 2017-08-17 2019-07-19 平安科技(深圳)有限公司 用户权限数据的查询方法及终端设备
US11243703B2 (en) 2018-04-27 2022-02-08 Hewlett Packard Enterprise Development Lp Expandable index with pages to store object records

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1648899A (zh) * 2004-01-20 2005-08-03 微软公司 用于文档索引的非频繁字索引
CN101067822A (zh) * 2006-05-03 2007-11-07 国际商业机器公司 用于元数据的分级存储管理的方法和***
WO2009076755A1 (en) * 2007-12-17 2009-06-25 Ramius Corporation Social networking site and system
US7634466B2 (en) * 2005-06-28 2009-12-15 Yahoo! Inc. Realtime indexing and search in large, rapidly changing document collections

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7099999B2 (en) * 2003-09-30 2006-08-29 International Business Machines Corporation Apparatus and method for pre-fetching data to cached memory using persistent historical page table data
US7580921B2 (en) * 2004-07-26 2009-08-25 Google Inc. Phrase identification in an information retrieval system
US7487178B2 (en) * 2005-10-05 2009-02-03 International Business Machines Corporation System and method for providing an object to support data structures in worm storage
US8165111B2 (en) * 2006-07-25 2012-04-24 PSIMAST, Inc Telecommunication and computing platforms with serial packet switched integrated memory access technology
US20080065639A1 (en) 2006-08-25 2008-03-13 Netfortis, Inc. String matching engine
US20080155229A1 (en) 2006-12-21 2008-06-26 Kevin Scott Beyer System and method for generating a cache-aware bloom filter
US8055633B2 (en) * 2008-01-21 2011-11-08 International Business Machines Corporation Method, system and computer program product for duplicate detection
US8391584B2 (en) 2008-10-20 2013-03-05 Jpmorgan Chase Bank, N.A. Method and system for duplicate check detection
US20100199036A1 (en) * 2009-02-02 2010-08-05 Atrato, Inc. Systems and methods for block-level management of tiered storage
US8527496B2 (en) * 2010-02-11 2013-09-03 Facebook, Inc. Real time content searching in social network
US8239584B1 (en) * 2010-12-16 2012-08-07 Emc Corporation Techniques for automated storage management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1648899A (zh) * 2004-01-20 2005-08-03 微软公司 用于文档索引的非频繁字索引
US7634466B2 (en) * 2005-06-28 2009-12-15 Yahoo! Inc. Realtime indexing and search in large, rapidly changing document collections
CN101067822A (zh) * 2006-05-03 2007-11-07 国际商业机器公司 用于元数据的分级存储管理的方法和***
WO2009076755A1 (en) * 2007-12-17 2009-06-25 Ramius Corporation Social networking site and system

Also Published As

Publication number Publication date
US20120173510A1 (en) 2012-07-05
US8626781B2 (en) 2014-01-07
CN102542052A (zh) 2012-07-04

Similar Documents

Publication Publication Date Title
CN102542052B (zh) 优先散列索引
US10685017B1 (en) Methods and systems for efficient query rewriting
CN102725759B (zh) 用于搜索结果的语义目录
CN100458779C (zh) 扩展索引的方法
CN102567461B (zh) 用于大文档索引的匹配漏斗
US8832084B2 (en) Enhancing and optimizing enterprise search
CN110321325B (zh) 文件索引节点查找方法、终端、服务器、***及存储介质
Skobeltsyn et al. ResIn: a combination of results caching and index pruning for high-performance web search engines
US20080065602A1 (en) Selecting advertisements for search results
US20080082554A1 (en) Systems and methods for providing a dynamic document index
US9529908B2 (en) Tiering of posting lists in search engine index
CN104424219B (zh) 一种数据文件的管理方法及装置
US9262511B2 (en) System and method for indexing streams containing unstructured text data
US20120233096A1 (en) Optimizing an index of web documents
CN110888837B (zh) 对象存储小文件归并方法及装置
WO2012126180A1 (en) Multi-layer search-engine index
Asadi et al. Fast candidate generation for two-phase document ranking: Postings list intersection with Bloom filters
CN101576854A (zh) 文件访问的方法、装置及***
CN111831691B (zh) 一种数据读写方法及装置、电子设备、存储介质
CN103559307A (zh) 一种查询的缓存方法及装置
US20090006354A1 (en) System and method for knowledge based search system
CN102129454A (zh) 一种基于云存储的百科数据处理方法及***
CN105243073A (zh) 一种书签访问方法、装置及终端
CN103646034A (zh) 一种基于内容可信的Web搜索引擎***及搜索方法
CN107820612A (zh) 位向量搜索索引

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150619

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150619

Address after: Washington State

Applicant after: MICROSOFT TECHNOLOGY LICENSING, LLC

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160106

Termination date: 20211229

CF01 Termination of patent right due to non-payment of annual fee