CN102057378A - 搜索索引格式优化 - Google Patents

搜索索引格式优化 Download PDF

Info

Publication number
CN102057378A
CN102057378A CN2009801224702A CN200980122470A CN102057378A CN 102057378 A CN102057378 A CN 102057378A CN 2009801224702 A CN2009801224702 A CN 2009801224702A CN 200980122470 A CN200980122470 A CN 200980122470A CN 102057378 A CN102057378 A CN 102057378A
Authority
CN
China
Prior art keywords
document
increment
subclauses
clauses
classification
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.)
Granted
Application number
CN2009801224702A
Other languages
English (en)
Other versions
CN102057378B (zh
Inventor
R·卡萨诺夫
C·C·梅里根
M·佩特立克
A·I·科汉
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 Corp
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 Corp filed Critical Microsoft Corp
Publication of CN102057378A publication Critical patent/CN102057378A/zh
Application granted granted Critical
Publication of CN102057378B publication Critical patent/CN102057378B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems

Abstract

提供了一种搜索索引结构,其通过结合为从存储中进行快速检索而优化并且消除专用于短语搜索的数据的索引来扩展典型的复合索引。其他数据以允许计算数据而非存储数据的方式来表示。将可变长度条目与逻辑类别相关联允许从类别推断条目长度而非存储类别长度。使用文档ID之间的增量值而非ID本身生成通过哈夫曼编码或类似的压缩方法来高效地压缩的紧凑的、密集的符号集。在编码之前使用上阈值来从该符号集中移除较大的且由此少见的增量值进一步提高编码性能。

Description

搜索索引格式优化
背景
在由多个文档组成的搜索域内搜索关键字或相似的数据项通常涉及使用索引。通常,该索引是将关键字与文档相关联的倒排索引。
在搜索索引本质上是通用的情况下,它必须支持各种类型的搜索。一个常见示例是关键字搜索,其中用户提供一个或多个关键字或值,并且搜索结果是搜索域内包含所有关键字的所有文档。另一示例是短语搜索,其中用户提供由两个或更多单词以特定顺序组成的短语。在这种情况下,搜索结果是来自搜索域中包含恰如所提供的短语的短语(即,所有单词相邻且以相同的顺序)的所有文档。支持短语查询的索引必须包含比不支持短语查询的索引多得多的数据,因为它必须包括单词每一次出现在文档内的位置。
为了满足用户需求,搜索必须既快速又准确。在索引层面,这引发了竞争的需求。为了精确索引必须是完整的,但这驱动了对较大索引的需求。为了快速访问索引必须是较小的,但这驱动了消除数据的需求。可以使用压缩方案来减少必须读入的数据量,但是这可能不足以满足用户对快速结果的需求。
概述
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于确定或限制所要求保护的主题的范围。
此处所公开的主题的各方面涉及搜索索引结构,其中使用对预先存在的结构的扩展来优化非短语搜索。该优化包括消除关于文档内关键字出现的位置的信息。
其他方面涉及通过以可以计算而非存储索引的方式构造索引来消除数据。将可变长度出现计数字段与逻辑类别相关联以允许从类别推断字段大小而非存储字段大小。在类别内和跨类别使用连续符号值允许计算符号值而非将其存储在类别中。对类别内的符号条目进行排序并且在编码表中匹配该排序允许计算对应于代码的符号而非存储该符号。
以下描述的方法可被实现为计算机进程、计算系统、或者诸如计算机程序产品等制品。计算机程序产品可以是计算机系统可读并编码了用于执行计算机进程的指令的计算机程序的计算机存储介质。计算机程序产品还可以是计算系统可读并编码了用于执行计算机过程的指令的计算机程序的载体上的传播信号。
对以上概述的更全面的理解可通过参考以下简要概述的附图、以下对本发明的各实施例的详细描述以及所附权利要求书来获得。
附图简述
图1示出了复合搜索索引的结构的一实施例。
图2示出了用于执行多单词、非短语查询的方法的一实施例的高级流程图。
图3示出了用于执行短语查询的方法的一实施例的高级流程图。
图4示出了内容索引扩展的顶层结构的一实施例。
图5示出了用于压缩表页面的结构的一实施例。
图6示出了用于类别描述符的结构的一实施例。
图7示出了用于数据页面的结构的一实施例。
图8示出了用于页面目录条目的结构的一实施例。
图9示出了用于文档ID比特流条目的结构的一实施例。
图10示出了压缩过程的一般流程。
图11示出了解压过程的一般流程。
详细描述
本详细描述是参考附图做出的,附图构成了详细描述的一部分,并且附图通过说明示出了具体实施例。足够详细地描述这些实施例以允许本领域的技术人员实践以下所教导的内容,并且应该理解可以使用其他实施例,并且可以作出逻辑、机械、电子和其他改变而不背离本发明主题的精神或范围。以下详细描述因此不是限制性的,且其范围仅由所附权利要求来限定。
概览
本发明针对在搜索域内搜索文档(或文件)集以找到与用户最相关的文档。搜索通常涉及从用户获取一组关键字以指示搜索并且然后标识搜索域内匹配这些关键字的所有文档。在试图标识这些候选文档时,搜索引擎可以在文档的正文或文档的特定部分或特性(例如标题、摘要等)内查找关键字。
所得的候选文档集包含来自搜索域的可能相关的所有文档。接着可以将排序算法应用到候选文档以预测文档与用户的相关性。接着通常以预测的相关性的降序向用户呈现候选文档。
这种类型的搜索的实施例通常利用将关键字与文档关联的倒排索引结构。参考图1,可以看出这种索引100可以由若干组件组成。本发明的主要兴趣是内容索引102和内容索引扩展106。虽然基本范围索引104和复合范围索引108对于总体搜索过程是重要的,但是它们不直接与本发明相关。
内容索引102是在搜索域中的文档中找到的关键字的完整索引。它被结构化成支持各种类型的搜索并且可独立于内容索引扩展106使用。内容索引102内的标志指示在内容索引扩展106中是否有信息可供使用。对于每一个关键字都存在该标志,以便提供对如何和何时使用扩展信息的控制。
内容索引102支持的一种类型的搜索是“短语”查询。这是其中用户查找以特定顺序出现的单词的特定组合的查询。一个简单的示例是搜索短语“the quick brown fox”。如果文档恰好包含该短语,则它是候选者,如果它包含分散在整个文档中或不同顺序的所有单词,则它不是候选者。为了高效起见,这种类型的查询要求索引包含有关每一个关键字出现在文档中的哪里的信息,这样使得搜索引擎可确定它们是否相邻并且按照适当的顺序。该信息增加了索引的大小以及由此的必须从包含索引的存储介质(例如盘驱动器)读入的数据量。对于其中所提供的关键字中的一个或多个在较高百分比的文档中出现的较大搜索域,读入该数据所需的时间包括执行搜索所需的时间中的大部分。
为涉及在大量文档中出现的关键字的非短语查询优化内容索引扩展106。一种用途是用于其中用户提供关键字集的情况,所有关键字必须出现在每一个候选文档中,但不必按照任何特定顺序。另一用途是作为对短语查询的初始过滤器,在使用内容索引102来执行特定短语是否包含在其余文档中的更昂贵的判定之前清除不包含所有单词的那些文档。
由于内容索引扩展106无需支持短语查询,因此它无需包含关于每一个关键字出现在每一个文档内的特定位置的信息(被称为出现数据)。它最多会存储单词出现多少次的计数,即出现计数。该单个值比表示文档内的每一个位置所需的数字集小得多,尤其当单词在文档中广泛使用时。消除该数据减少了必须从存储读取的关于每一个关键字的数据量。这减少了处理每一个关键字所需的时间,从而加速了搜索。
为了简明起见,在本发明中,索引将被描述为由对应于每一个组件的单独的文件组成。清楚地,使用文件仅是一个实施例且并不旨在作为对本发明的限制。索引也是按照存在于“文档”内的“关键字”来描述的。关键字不限于“单词”。它可以是短语、数字、代码或要在文档内搜索的任何类似的值。以类似方式,术语“文档”会被用于指正在搜索的且包含关键字的那些实体。它们可以是文档、文件、卡或具有必要特性的任何其他逻辑结构。
为了进一步减少需要从存储读取的数据量,如下所述压缩内容索引扩展106的各部分。一个实施例使用哈夫曼编码,它是具有对较频繁出现的数据项使用较短的代码的特性的无损熵编码方案。在编码被应用到文档ID之间的差异(或步长)的情况下,随着在搜索域内关键字出现的频率增加,压缩编得更加高效。这是对所公开的方法的较好的匹配,其中内容索引扩展仅用于常用关键字。
可以用许多方式使用内容索引扩展106以支持关键字搜索。图2中示出了一种用途,其示出了多单词、非短语查询的高级逻辑流程。在步骤200,从用户获取关键字。循环判定202控制对每一个关键字的处理。在该循环内,在步骤204,在内容索引102内单独地查找每一个关键字以确定内容索引扩展(“CIX”)是否对关键字可用。这可以在无需读入大量出现数据的情况下完成,因为必要的数据可以被存储在关于关键字的首部信息中。如果在内容索引102内置位了标志,则它将伴随到内容索引扩展106中单独所在位置的偏移量。这允许直接访问相关信息。接着在步骤208,使用来自内容索引扩展106的索引信息来确定包含当前单词的文档的列表。如果没有内容索引扩展106条目可用,则会在步骤206处使用内容索引102中的出现数据来生成候选文档的列表。在单独地为每一个关键字获取候选文档的列表之后,将形成210这些列表的交集,该交集生成其中出现所有关键字的所有文档的单个列表。这是将对用户可用的搜索结果。
第二种用途在图3中示出,图3示出了可用于执行短语查询的高级步骤。步骤300、302、304和308与以上参考图2所讨论的步骤200、202、204和208相同。循环内的处理的不同之处在于在没有可用于关键字的内容索引扩展106时,跳过处理而非使用内容索引104来生成列表。这是因为循环内的处理正在担当过滤器并且不生成最终回答。当搜索短语时,仅需对其中出现所有关键字的那些文件检查短语。该文件集必然是其中出现关键字的任何组合的那些文件的子集。虽然期望在形成交集之前形成关于所有关键字的候选列表,但这不是必须的。即使对单个单词进行过滤会充分地减少开销以加速搜索。在形成310所有候选文档列表的交集后,使用内容索引104来处理312其余文档以确定哪一个(如果有的话)恰好包含短语。该列表是会对用户可用的搜索结果。
内容索引扩展结构
参考图4,可以看出内容索引检索106的顶层结构。存在用于索引中的每一个关键字的单独分段400。在一个实施例中,每一个分段开始于4096个字节的页边界。分段接着可以横跨如所需那样多的页面以保存数据。在每一个关键字分段内,有两个不同的数据集。从初始页边界开始的是压缩表页面402。此后,在下一页边界开始的是一系列的一个或多个数据页404。注意页面对齐对于实现本发明的概念不是必须的,但是可以提供改进的性能。
本发明的一实施例单独地为每一个单词编码数据。该方法允许为每一个关键字数据集使用单独的编码表504(见图5),以便优化每一个关键字内的压缩。为了解压数据,解码信息必须对每一个关键字可用。一个实施例将编码表504与关键字一起存储为压缩表页面的一部分。这样做是因为可以从编码表504导出所需的解码表并且编码表504较小,由此节省存储空间。一旦生成了解码表,就可以解压和使用数据页404。
图5示出了压缩表页面402的结构。该结果可以通过也参考图7中所示的数据页404来最好地理解。在一较高层面,为每一个关键字存储的数据是对包含关键字的文档的一系列引用。对于每一个文档,需要两个信息项:文档ID(DocID)和关键字在文档中出现的次数的出现计数(OccurCnt)。这些信息项被存储在数据页的单独部分,即DocID比特流708和OccurCnt比特流710中。这是部分是因为不总是使用出现数据并且单独存储它意味着无需使用DocID来检索它的事实。这些信息项都是使用压缩表页面402但以不同的方式来编码的。
OccurCnt被存储在OccurCnt比特流710中作为一系列可变长度位字段。OccurCnt值可以在各文档中广泛地变化。鉴于此,存储OccurCnt所需的位数也是变化的。在一个实施例中,使用固定数量的不同大小来存储OccurCnt。例如,字段的长度可以是0、3、7、12或20位中的一个。结果,每一个文档会具有存储在具有这些有限长度数字中的一个的字段中的OccurCnt。使用该属性,文档可以按照其对应的OccurCnt的长度来分组。在比特流402中,这些组被称为类别并且每一个类别用类别描述符502表示。因为特定类别中的所有文档具有相同的OccurCnt字段长度,所以仅需将该长度作为出现中的位字段606存储在类别描述符502中一次,而非与每一个DocID存储在一起。这从内容索引扩展106中消除了大量冗余数据。对于出现中的位,使用0值来指示OccurCnt值与对应于前一DocID的OccurCnt值相同。在OccurCnt比特流710中没有用于这些条目的条目。第一类别包含具有该特性的所有DocID增量。
图6示出了类别描述符502的一实施例。符号计数602指定类别中符号数量。DocID增量阈值604指定将在类别中编码的DocID增量的上限。出现中的位606指定用于存储OccurCnt比特流710中的对应于类别中的符号的每一个OccurCnt条目的位数。基础符号值608(“BSV”)定义了加到每一个DocID增量值以使得它对该类别唯一的值。
在类别中使用的每一个符号是对应于该类别的DocID增量和BSV的总和。对应于每一个类别的DocID增量值的范围从0到(DocID阈值-1)。对应于第一类别的BSV是零(0),而对应于所有其他类别的BSV等于前一类别的BSV加上类别中符号数。结果,由所有类别表示的完整的符号集是从最小的DocID增量(0)到上一类别的BSV加上最大的经编码的DocID增量的连续数列。在该数列中,不同的DocID增量集在每一个类别中重复,通过使用不同的BSV被编码为不同的符号。该方法导致每一个DocID增量出现在每一个类别中,由此与对应于出现中的位的每一个可用值配对。
一个实施例也使用每一个类别内的连续的DocID增量值。每一个类别将包含一系列相同的值。这允许根据符号和类别描述符计算DocID增量值。符号值用作对由类别表示的一系列DocID增量的索引。它落入哪一个类别确定对应于该类别的对应的出现中的位值和BSV。从符号减去BSV确定DocID增量值。因为排序定义了每一个类别中的符号值,所以无需存储符号。相反,可以按需计算符号值。也可以使用对类别中的值的其他固定排序来获得相同的结果。
代码以对应于类别描述符502中的条目的次序存储在编码表504中。编码表504中的条目的数量等于所有组合类别中的条目的总数。该对应关系允许通过使用编码表504中的代码索引来索引到类别中,来将代码映射到符号。这允许直接计算DocID增量或从类别定义和编码表504中生成解码表。因为可以用这种方式执行解码,所以无需像哈夫曼编码方案常用的那样将离散的符号值和代码一起存储在编码表504中。
本发明的概念之一是内容索引扩展106内的出现信息不包含关于关键字出现在相关联的文档中的哪里的任何数据。唯一的数据是关键字在文档中出现的次数。该出现计数数据支持使用基于单词出现的频率来区分候选文档的相关性排序算法的查询。这可以使用比本发明的内容索引扩展106特别地不支持的短语查询所需的数据少得多的数据来完成。本发明的另一概念是出现计数数据被存储在与DocID增量信息分开的比特流中。这允许检索DocID数据而无需检索出现数据。这进一步优化了供在单独的DocID是足够的情况下使用的索引。也在某些相关性排序算法中使用的文档长度也不存储在内容索引扩展(106)中,由此进一步减少了所存储的数据量。
现在参考图7,DocID被存储在DocID比特流708内作为由哈夫曼编码算法生成的一系列符号。第一步是将每一个DocID转换成距离前一DocID的步长(或增量)。该DocID增量是2个连续DocID之间的数值差。如果当前DocID是已知的,则增量值允许计算下一DocID。因为增量比DocID小,所以使用增量减少了要存储的数据量。它也将唯一DocID的列表映射到哈夫曼压缩所需的小得多的有限数值集中。
为了进一步限制可能的值的数量,比所选DocID增量阈值604大的所有DocID增量被显式地存储在DocID比特流708内而非被存储为经编码的值。参考图9,经编码的DocID条目会仅具有符号代码902。具有比DocID增量阈值大的增量值的那些DocID会用特殊符号值表示,并且增量值会被显式地存储在下一字段中作为未经编码的DocID增量904。一实施例将(BSV+DocID增量阈值)的值用作特殊符号。这是对标准哈夫曼编码方案的修改。它具有减少需要编码的符号数的优点并且招致最小尺度的惩罚。这是因为在其中较大百分比的文档包含关键字的搜索域中,DocID增量值通常会分布在相对较小的值集上。较大的增量值会很少出现。在哈夫曼编码方案中,这会导致它们被分配最长的代码。将使用的代码和增量值本身之间的长度差异相对较小,因此将增量存储为未经编码的值的代价是最小的。在某些情况下,未经编码的增量和相关联的特殊符号值的组合长度实际上会比用标准编码方法分配的符号要小。又一实施例使用两个不同的特殊符号值来为显式DocID增量值选择两个不同的存储大小(即两个字节对比四个字节)以便进一步优化存储使用。
再次参考图7,可以看出每一个数据页404开始于内务处理信息。在一个实施例中,这包括指定存储在该页上的上一文档ID的上一DocID 702和指定包括当前页面上的文档ID的剩余文档ID的数量的剩余DocID数704。这些在导航通过数据页404时使用。数据页404的下一部分是页面目录706,页面目录706是当前页面上的DocID的目录。对于每一个DocID,存在页面目录条目800。一个实施例在图8中示出。DocID字段802标识条目适用的特定文档ID。DocID Cnt字段804指定当前DocID之前的页面中的DocID的数量。DocID偏移量字段806指定从DocID比特流708的开头到DocID比特流708中的经编码的DocID条目的位置的位偏移量。OccurCnt偏移量字段808指定从OccurCnt比特流710的开头到OccurCnt比特流710中的OccurCnt条目的位置的位偏移量。这些值允许直接访问对应于数据页404内的所选DocID的信息,其中并不期望遍历列表以找到该信息。
压缩概览
为内容索引扩展106生成经压缩的数据涉及两个独立的高级过程:生成编码数据;以及编码每一个条目。为每一个关键字重复每一个过程以便在内容索引扩展106中列出。一种方法在下文中描述并且在图10中示出。
生成编码数据
生成编码数据的第一步是确定搜索域中包含关键字的文档的列表。对于每一个文档,确定1004 DocID增量和OccurCnt值以及保存OccurCnt所需的出现中的位值。所有相关文档中的这些值的完整集合被存储在单个文档列表中。使用该列表,基于DocID增量值来确定用于类别的DocID增量阈值。
在来自文档列表的信息可用的情况下,可以定义1006类别并指定类别描述符502。对于每一个类别,符号计数602被定义为小于DocID增量阈值的值。符号计数602和DocID增量阈值604值在所有类别中是公共的。向每一个类别分配从预定义的值集中顺序地选出的不同的值以用于出现中的位字段606。接着向每一个类别分配不同的基础符号值(BSV)608,从0开始并且对于每一个后续类别按符号计数602递增。
在定义类别之后,指定跨越所有类别的完整符号集1008。每一个符号被计算为对应于于类别的BSV加上适当的DocID增量值。接着利用从文档列表导出的频率信息,使用哈夫曼编码来生成对应于于每一个符号的不同的代码1010。每一个唯一的DocID增量和出现中的位对在列表中出现的次数是对编码过程的输入,且给予更频繁使用的对更短的代码。结合这些代码以创建以上讨论的格式的编码表504。接着可以将类别描述符502和编码表504的组合集合写入1012到内容索引扩展106作为对应于关键字的压缩表页面402。
为每一个文档编码数据
在编码数据可用的情况下,可以编码文档列表中的每一个DocID增量/OccurCnt对。对于列表中的每一个文件1014,使用相关联的出现中的位值来确定将在哪一个类别中编码数据1016。将对应于类别的BSV 608加到DocID增量以确定符号1018。使用编码表1020将该符号映射到其关联的代码,并且将该代码附加1022到DocID比特流708的末尾。如果出现中的位是非0的,则将OccurCnt附加1026到该位数中的出现中的位的末尾。
对于其中DocID增量大于DocID增量阈值604的特殊情况1024,会使用来自步骤1020的对应于特殊符号的代码,并且会将DocID增量写入1026到DocID比特流708,紧接着如图9所示的经编码的符号之后。
当在步骤1028中在DocID比特流708和OccurCnt比特流710中积累了用于填充数据页404的足够数据时,生成包括上一DocID 702、剩余DocID数704以及页面目录706的首部信息,并且以图7中所示的格式将完整的数据页写入1030到内容索引扩展106中,且开始新的数据页404。该处理继续直至所有文档信息被编码并且写入到内容索引扩展106,包括写入1032上一个可能部分的数据页面。处理接着移动到要插入到内容索引扩展106的下一关键字。
解压缩概览
以类似于压缩的方式,解压缩涉及两个主要过程:生成解码信息;以及接着为每一个文档解码信息。通常这是对于在查询中指定的各个关键字完成的,而非一次为整个关键字列表完成。一种方法在下文中描述并且在图11中示出。
生成解码表
通过引用类别描述符502将存储在压缩表页面402中的编码表504转换成解码表1102。因为编码表504中的代码是以与出现在类别中的符号相同的顺序存储的,所以可以通过枚举符号并按照它们存储在编码表504中的顺序将它们与代码进行匹配,来将代码到符号映射重新创建为解码表。
解码关于每一个文档的数据
对于每一个文档1104,从DocID比特流708读取1106代码并且使用解码表来将该代码映射到符号1108。将符号与对应于类别描述符502的BSV进行比较允许确定正确的类别1110。这确定了要使用的出现中的位606值。检查1112符号以确定它是普通符号还是特殊符号。如果它是普通的,则计算DocID增量。从符号减去对应于类别的BSV 608生成对应的DocID增量值。将DocID增量加到上一经处理的DocID生成当前DocID。如果需要OccurCnt,则可以使用出现中的位606值来从OccurCnt比特流710中读取1118该OccurCnt。
在其中从DocID比特流708读取的代码映射到指示超过DocID增量阈值604的DocID增量的特殊符号的特殊情况下,在代码后立即从DocID比特流708读取DocID增量值。在步骤1118之后,流程返回到步骤1104。
在一个实施例中,支持对比特流的两种访问模式。通过在每一个比特流的开头处开始并且维护到每一个比特流中的当前位置的指针,顺序访问是可用的。读取每一个代码时,对于DocID比特流708的指针前进一位。因为哈夫曼编码使用无前缀代码,所以代码在长度上变化并且可以按照其位顺序来识别。这意味着可以通过读取任一位来识别代码。对于OccurCnt比特流710的指针递增对应于符号的出现中的位值。直接访问也经由页面目录706可用。可以搜索目录以查找包含对应于所访问的文档的DocID字段802的页面目录条目800。DocID偏移量804提供到DocID比特流708中的偏移量,而OccurCnt偏移量808提供到OccurCnt比特流710中的偏移量。接着可以检索关于所访问的文档的数据或者从该点开始顺序访问。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上文所描述的具体特征和动作是作为实现权利要求的示例形式来公开的。本领域的技术人员可以理解,构想结构中的许多改变和具有很大不同的实施例和应用,而不背离所公开的主题的范围。

Claims (20)

1.一种搜索搜索域内的多个文档的方法,所述方法包括:
(a)提供(1022)具有一系列连续、长度可变的文档ID增量条目(904)的经压缩的文档ID增量列表(708),对所述多个文档中包含关键字的每一个文档有一个所述文档ID增量条目;
(b)提供(1023)具有一系列连续、长度可变的关键字出现计数条目的出现计数列表(710),对所述经压缩的文档ID增量列表(708)中的多个文档中的至少某一些中的每一个有一个所述关键字出现计数条目;以及
(c)通过使用所述经压缩的文档ID增量列表(708)并使用所述出现计数列表(710)来搜索(202)所述多个文档。
2.如权利要求1所述的方法,其特征在于,还包括:
将每一个关键字出现计数条目与有限的一组类别中的一个相关联,每一个类别具有出现条目大小,且每一个关键字出现计数条目的大小等于所述出现条目大小。
3.如权利要求2所述的方法,其特征在于,一个类别具有指示所述关键字出现计数条目不是存储在所述出现计数列表中的出现条目大小。
4.如权利要求2所述的方法,其特征在于,所述有限的一组类别中的每一个还包括基值,并且所述文档ID增量列表中的每一条目表示类别基值和相关联的文档ID增量条目之和的符号。
5.如权利要求4所述的方法,其特征在于,所述符号的值形成跨所述有限的一组类别中的所有类别的单个连续数列。
6.如权利要求4所述的方法,其特征在于,还包括:
使用单个文档ID增量值集来表示所述文档ID增量列表,其中所述有限的一组类别中的每一个表示整个文档ID增量值集,并且每一个离散文档ID增量值出现在具有不同符号值的每一个所述类别中,由此每一个符号值表示不同的文档ID增量值和出现条目大小对。
7.如权利要求6所述的方法,其特征在于,还包括:
提供用于压缩所述文档ID增量列表的编码表,所述编码表中的代码排序对应于所述有限的一组类别中的相关联的符号的次序,由此对应于所述编码表中的每一个代码的符号可以基于所述代码排序来计算。
8.如权利要求7所述的方法,其特征在于,还包括:
(a)使用通过指定文档ID增量大小的上阈值修改的哈夫曼编码来压缩所述文档ID增量列表;
(b)不编码大于所述上阈值的所有文档ID增量值;以及
(c)显式地将大于所述上阈值的所有文档ID增量值存储在所述文档ID增量列表中。
9.如权利要求1所述的方法,其特征在于,还包括:
其中所述经压缩的文档ID增量列表基于多个关键字来标识文档集,通过使用所述经压缩的文档ID增量列表来搜索所述文档集以标识包含给定关键字的文档子集,并且使用所述出现计数列表来标识所述给定关键字出现在所述文档子集中的每一个文档中的次数。
10.一种搜索出现在搜索域内的多个文档中的关键字的方法,所述方法包括:
(a)使用索引(100)来标识包含所述关键字的那些文档,所述索引(100)具有经编码的文档ID增量列表(708),所述文档ID增量列表具有多个条目,每一个所述条目使用符号来表示对应于所述搜索域中包含所述关键字的多个文档中的每一个的文档ID增量值。
(b)将所述文档ID增量列表(708)中的每一个符号(902)与有限的一组类别(502)中的一个类别以及所述有限的一组类别(502)中的每一个类别内的次序相关联(1016)。
11.如权利要求10所述的方法,其特征在于,每一个类别包括基值,且所述文档ID增量列表中的每一个符号是对应于相关联的类别的基值和所述符号表示的文档ID增量值之和。
12.如权利要求11所述的方法,其特征在于,还包括:
使用单个文档ID增量值集来表示所述文档ID增量列表,每一个所述类别表示整个文档ID增量值集并且每一个离散文档ID增量值出现在具有不同符号值的每一个所述类别中。
13.如权利要求12所述的方法,其特征在于,还包括:
通过使用编码表的方法来编码所述文档ID增量列表,所述编码表中的代码排序对应于所述类别中的相关联的符号的次序,由此对应于所述编码表中的每一个代码的符号可以基于所述代码排序来计算。
14.如权利要求10所述的方法,其特征在于,还包括:
(a)使用通过指定文档ID增量大小的上阈值修改的哈夫曼编码来压缩所述文档ID增量列表;
(b)不编码大于所述上阈值的所有文档ID增量值;以及
(c)显式地将大于所述上阈值的所有文档ID增量值存储在所述文档ID增量列表中。
15.如权利要求10所述的方法,其特征在于,还包括:
使用出现计数列表来确定关键字在每一个文档中的出现次数,其中所述出现计数列表具有与所述文档ID增量列表中的至少某些条目相关联的关键字出现计数条目。
16.如权利要求15所述的方法,其特征在于,所述出现计数列表包括一系列连续的长度可变条目,且每一个条目的长度选自有限的一组固定值。
17.如权利要求16所述的方法,其特征在于,还包括:
(a)将每一个类别与出现条目大小相关联;以及
(b)将对应于与所述类别相关联的文档ID增量列表条目的每一个出现计数列表条目存储在其大小等于与所述类别相关联的大小的字段中。
18.如权利要求17所述的方法,其特征在于,一个类别具有指示出现计数不是存储在所述出现计数列表中的出现条目大小。
19.一种搜索出现在搜索域内的多个文档中的关键字的方法,所述方法包括:
(a)提供具有多个关键字条目(400)的索引结构(100),其中每一个所述关键字条目(400)包括:
(1)多个逻辑类别(502):
(i)每一个所述类别(502)具有基础符号值(608)、出现条目大小(606)和符号集,
(ii)每一个所述类别(502)将一系列相同的连续文档ID增量值表示为一系列不同的符号(1008),并且
(iii)每一个所述符号(1008)被计算为对应于所述类别(502)的基础符号值(608)和所述符号(602)表示的文档ID增量值之和;
(2)具有一系列连续、长度可变的文档ID增量条目(904)的经压缩的文档ID增量列表(708),对所述搜索域内的多个文档中包含所述关键字的每一个文档有一个所述文档ID增量条目(708):
(i)每一个所述文档ID增量条目(904)与所述多个逻辑类别(502)中的一个相关联,并且
(ii)每一个所述文档ID增量条目(904)包括来自相关联的逻辑类别(502)的对应符号(1008);
(3)具有一系列连续、长度可变的关键字出现计数条目的出现计数列表(710):
(i)每一个所述出现计数条目与所述文档ID增量条目(904)中的一个相关联,并且
(ii)每一个所述关键字出现计数条目存储在其大小等于对应于与所述文档ID增量条目(904)相关联的逻辑类别(502)的出现条目大小(606)的字段中;以及
(4)具有代码(902)列表的编码表(504):
(i)每一个所述代码(902)与来自所述多个逻辑类别(502)中的一个的符号相关联,并且
(ii)代码排序对应于所述多个逻辑类别(502)中的相关联的符号的次序,由此对应于所述编码表(504)中的每一个所述代码(902)的符号可基于所述代码排序来计算;以及
(b)通过以下动作来搜索(202)所述多个文档:使用所述文档ID增量列表来标识包含所述关键字的文档,使用所述出现计数列表(710)来标识所述关键字出现在每一个文档中的次数,以及使用所述编码表(504)来压缩所述文档ID增量列表(708)。
20.如权利要求19所述的方法,其特征在于,还包括:
(a)使用通过指定文档ID增量大小的上阈值修改的哈夫曼编码来压缩所述文档ID增量列表;
(b)不编码大于所述上阈值的所有文档ID增量值;以及
(c)显式地将大于所述上阈值的所有文档ID增量值存储在所述文档ID增量列表中。
CN2009801224702A 2008-06-13 2009-05-13 搜索索引格式优化 Active CN102057378B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/139,213 US8166041B2 (en) 2008-06-13 2008-06-13 Search index format optimizations
US12/139,213 2008-06-13
PCT/US2009/043816 WO2009151861A2 (en) 2008-06-13 2009-05-13 Search index format optimizations

Publications (2)

Publication Number Publication Date
CN102057378A true CN102057378A (zh) 2011-05-11
CN102057378B CN102057378B (zh) 2013-04-24

Family

ID=41415696

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009801224702A Active CN102057378B (zh) 2008-06-13 2009-05-13 搜索索引格式优化

Country Status (13)

Country Link
US (3) US8166041B2 (zh)
EP (1) EP2310959A4 (zh)
JP (1) JP5415529B2 (zh)
KR (1) KR101527994B1 (zh)
CN (1) CN102057378B (zh)
AU (1) AU2009257851B2 (zh)
BR (1) BRPI0912728A2 (zh)
HK (1) HK1157897A1 (zh)
IL (1) IL208807A (zh)
RU (1) RU2503058C2 (zh)
TW (1) TWI480744B (zh)
WO (1) WO2009151861A2 (zh)
ZA (1) ZA201007424B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109902141A (zh) * 2017-12-08 2019-06-18 三星电子株式会社 运动规划的方法和自主代理
CN112435674A (zh) * 2020-12-09 2021-03-02 北京百瑞互联技术有限公司 优化频谱数据的lc3算术编码搜索表的方法、装置、介质

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8504552B2 (en) * 2007-03-26 2013-08-06 Business Objects Software Ltd. Query based paging through a collection of values
US8166041B2 (en) 2008-06-13 2012-04-24 Microsoft Corporation Search index format optimizations
CN101739400B (zh) * 2008-11-11 2014-08-13 日电(中国)有限公司 生成索引的方法和装置以及检索方法和装置
US9298722B2 (en) 2009-07-16 2016-03-29 Novell, Inc. Optimal sequential (de)compression of digital data
US8832103B2 (en) 2010-04-13 2014-09-09 Novell, Inc. Relevancy filter for new data based on underlying files
US8566324B1 (en) 2010-09-12 2013-10-22 Giovanni M Sacco Inverted index and inverted list process for storing and retrieving information
US8996531B1 (en) * 2010-09-12 2015-03-31 Giovanni M Sacco Inverted index and inverted list process for storing and retrieving information
US20120078874A1 (en) 2010-09-27 2012-03-29 International Business Machine Corporation Search Engine Indexing
US9195675B2 (en) 2011-02-24 2015-11-24 A9.Com, Inc. Decoding of variable-length data with group formats
US9058377B2 (en) * 2011-06-03 2015-06-16 Google Inc. Fixed width encoding document posting lists
US9947198B2 (en) 2013-08-26 2018-04-17 EveryFit, Inc. Systems and methods for context-aware transmission of longitudinal safety and wellness data wearable sensors
US9581612B2 (en) 2013-08-26 2017-02-28 EveryFit, Inc. Systems and methods for a power efficient method for detecting wear and non-wear of a sensor
US9554747B2 (en) 2013-08-26 2017-01-31 EveryFit, Inc. Power efficient system and method for measuring physical activity in resource constrained devices
RU2679960C2 (ru) 2013-10-10 2019-02-14 Общество С Ограниченной Ответственностью "Яндекс" Способ и система базы данных для нахождения документов
US10055482B2 (en) * 2014-03-18 2018-08-21 Ntt Docomo Inc. Knowledge engine for managing massive complex structured data
US11741121B2 (en) * 2019-11-22 2023-08-29 Takashi Suzuki Computerized data compression and analysis using potentially non-adjacent pairs
CN107766414B (zh) * 2017-09-06 2020-06-12 北京三快在线科技有限公司 多文档交集获取方法、装置、设备及可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6055526A (en) * 1998-04-02 2000-04-25 Sun Microsystems, Inc. Data indexing technique
US20030144995A1 (en) * 2002-01-25 2003-07-31 International Business Machines Compressing index files in information retrieval
CN101025737A (zh) * 2006-02-22 2007-08-29 王东 基于关注度的同源信息搜索引擎聚合显示方法及相关系统

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02158870A (ja) * 1988-12-12 1990-06-19 Nippon Telegr & Teleph Corp <Ntt> データベース検索方式
CA2000006C (en) 1989-01-23 1994-07-12 Walter W. Chang Combinatorial signatures for data encoding and searching
CA2066559A1 (en) * 1991-07-29 1993-01-30 Walter S. Rosenbaum Non-text object storage and retrieval
US5649183A (en) 1992-12-08 1997-07-15 Microsoft Corporation Method for compressing full text indexes with document identifiers and location offsets
CA2125337A1 (en) * 1993-06-30 1994-12-31 Marlin Jay Eller Method and system for searching compressed data
US5696963A (en) 1993-11-19 1997-12-09 Waverley Holdings, Inc. System, method and computer program product for searching through an individual document and a group of documents
JP3531281B2 (ja) * 1995-04-18 2004-05-24 富士ゼロックス株式会社 文書登録検索装置
US5987459A (en) 1996-03-15 1999-11-16 Regents Of The University Of Minnesota Image and document management system for content-based retrieval
JP3898717B2 (ja) * 1997-02-28 2007-03-28 富士通株式会社 データ圧縮/復元装置およびデータ圧縮/復元方法
US6134541A (en) 1997-10-31 2000-10-17 International Business Machines Corporation Searching multidimensional indexes using associated clustering and dimension reduction information
KR19990069299A (ko) 1998-02-06 1999-09-06 윤종용 특정 위치에 속한 정보를 찾는 웹 검색 방법
JP3664874B2 (ja) 1998-03-28 2005-06-29 松下電器産業株式会社 文書検索装置
JP2000101847A (ja) * 1998-09-21 2000-04-07 Fuji Xerox Co Ltd 画像信号符号化方法、画像信号復号方法および装置
GB9825102D0 (en) 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
JP2000298668A (ja) * 1999-04-12 2000-10-24 Ntt Data Corp 情報検索システムの情報格納装置及び方法
US6353825B1 (en) * 1999-07-30 2002-03-05 Verizon Laboratories Inc. Method and device for classification using iterative information retrieval techniques
US6636849B1 (en) 1999-11-23 2003-10-21 Genmetrics, Inc. Data search employing metric spaces, multigrid indexes, and B-grid trees
IES20000407A2 (en) * 2000-05-24 2001-08-08 Nua Ltd A System and Method for Categorising and Retrieving Documents on a Network
CN1203411C (zh) * 2000-11-10 2005-05-25 林圣富 资料索引搜寻存取管理方法
US6801904B2 (en) * 2001-10-19 2004-10-05 Microsoft Corporation System for keyword based searching over relational databases
US6993534B2 (en) * 2002-05-08 2006-01-31 International Business Machines Corporation Data store for knowledge-based data mining system
US7243110B2 (en) 2004-02-20 2007-07-10 Sand Technology Inc. Searchable archive
RU2266560C1 (ru) * 2004-04-28 2005-12-20 Федеральное государственное унитарное предприятие "Институт промышленного развития "Информэлектро" Способ поиска информации в политематических массивах неструктурированных текстов
TW200807264A (en) * 2006-07-26 2008-02-01 Yu Chun Hsia Multimedia data search system and method thereof
US7756877B2 (en) * 2006-08-04 2010-07-13 Apple Inc. Index compression
US8321485B2 (en) * 2006-11-08 2012-11-27 Hitachi, Ltd. Device and method for constructing inverted indexes
US20080162432A1 (en) * 2006-12-29 2008-07-03 Wen-Shan Wang Search table for unary k-th order exp-golomb decoder
CN100470551C (zh) * 2007-08-24 2009-03-18 新诺亚舟科技(深圳)有限公司 在手持学习终端上实现的联合搜索的方法
US7853598B2 (en) * 2007-10-01 2010-12-14 Sap Ag Compressed storage of documents using inverted indexes
US8166041B2 (en) 2008-06-13 2012-04-24 Microsoft Corporation Search index format optimizations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6055526A (en) * 1998-04-02 2000-04-25 Sun Microsystems, Inc. Data indexing technique
US20030144995A1 (en) * 2002-01-25 2003-07-31 International Business Machines Compressing index files in information retrieval
CN101025737A (zh) * 2006-02-22 2007-08-29 王东 基于关注度的同源信息搜索引擎聚合显示方法及相关系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109902141A (zh) * 2017-12-08 2019-06-18 三星电子株式会社 运动规划的方法和自主代理
CN109902141B (zh) * 2017-12-08 2024-02-09 三星电子株式会社 运动规划的方法和自主代理
CN112435674A (zh) * 2020-12-09 2021-03-02 北京百瑞互联技术有限公司 优化频谱数据的lc3算术编码搜索表的方法、装置、介质

Also Published As

Publication number Publication date
AU2009257851A1 (en) 2009-12-17
AU2009257851B2 (en) 2014-07-03
US20120179668A1 (en) 2012-07-12
US20150066899A1 (en) 2015-03-05
IL208807A0 (en) 2011-01-31
TWI480744B (zh) 2015-04-11
RU2503058C2 (ru) 2013-12-27
TW201009616A (en) 2010-03-01
KR101527994B1 (ko) 2015-06-10
US8914380B2 (en) 2014-12-16
BRPI0912728A2 (pt) 2019-08-27
IL208807A (en) 2014-06-30
US20090313238A1 (en) 2009-12-17
JP5415529B2 (ja) 2014-02-12
ZA201007424B (en) 2011-12-28
RU2010150819A (ru) 2012-06-27
JP2011523152A (ja) 2011-08-04
EP2310959A4 (en) 2012-10-31
CN102057378B (zh) 2013-04-24
HK1157897A1 (en) 2012-07-06
WO2009151861A2 (en) 2009-12-17
US8166041B2 (en) 2012-04-24
KR20110027679A (ko) 2011-03-16
EP2310959A2 (en) 2011-04-20
WO2009151861A3 (en) 2010-02-18

Similar Documents

Publication Publication Date Title
CN102057378B (zh) 搜索索引格式优化
Navarro et al. Compressed full-text indexes
Kreft et al. On compressing and indexing repetitive sequences
US9619565B1 (en) Generating content snippets using a tokenspace repository
KR101157693B1 (ko) 토큰스페이스 저장소와 함께 사용하기 위한 멀티-스테이지질의 처리 시스템 및 방법
JP4261779B2 (ja) データ圧縮装置および方法
US5953723A (en) System and method for compressing inverted index files in document search/retrieval system
US8838551B2 (en) Multi-level database compression
CN101809567B (zh) 文本串的二次散列提取
Kreft et al. Self-indexing based on LZ77
Pibiri et al. Clustered elias-fano indexes
Ladra Algorithms and compressed data structures for information retrieval
US7630996B1 (en) Method of database compression for database entries having a pre-determined common part
Petri et al. Efficient indexing algorithms for approximate pattern matching in text
Zhang Transform based and search aware text compression schemes and compressed domain text retrieval
Glory et al. Inverted index compression using Extended Golomb Code
US20090292699A1 (en) Nucleotide and amino acid sequence compression
Adiego et al. SCM: Structural contexts model for improving compression in semistructured text databases
Gupta Succinct data structures
Chen et al. Using d-gap patterns for index compression
Grossi et al. An algorithmic framework for compression and text indexing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1157897

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1157897

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150428

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

Effective date of registration: 20150428

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.