CN1979469A - 索引及其扩展和查询方法 - Google Patents
索引及其扩展和查询方法 Download PDFInfo
- Publication number
- CN1979469A CN1979469A CNA2005101242831A CN200510124283A CN1979469A CN 1979469 A CN1979469 A CN 1979469A CN A2005101242831 A CNA2005101242831 A CN A2005101242831A CN 200510124283 A CN200510124283 A CN 200510124283A CN 1979469 A CN1979469 A CN 1979469A
- Authority
- CN
- China
- Prior art keywords
- index
- group
- file
- subindex
- inverted
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/319—Inverted lists
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
一种索引结构和扩展索引的方法,包含:(a)在内存中对新插入的数据源进行生成倒排索引的索引操作;(b)如果索引操作所包含的源数据的个数达到第一阀值k1,则将所生成的倒排索引顺序地写入第一子索引文件;(c)如果第一子索引文件中最小的索引组的个数达到第二阀值k2,则把这k2个索引组合并成更大的索引组,顺序地写入第二子索引文件;(d)如果第二子索引文件中最小的索引组达到第三阀值k3个,则把它们组合并成更大的索引组,顺序地写入第一子索引文件。由于索引更新大都发生在小索引组中,大索引组的IO操作次数减少,因此能提高索引建立/更新速度,另外,可以根据系统资源的使用情况自动调整阀值k1、k2、k3。
Description
发明领域
本发明涉及信息检索技术,更具体来说,涉及建立和扩展索引的方法。
背景技术
随着因特网的普及以及网络上信息量的迅速增加,人们对高效的全文检索搜索引擎越来越依赖。全文搜索引擎的对象是文本,它能够对大量文档建立由字(词)到文档的倒排索引,当用户使用关键词来对文档(例如网页)进行查询时,搜索引擎向用户返回含有该关键词的文档。为了降低硬件和软件成本,目前的大多数搜索引擎都将倒排索引以文件形式(称为倒排文件)存储在非易失性存储器(例如硬盘)上,通过文件读/写操作来访问倒排文件,直接在磁盘索引上进行搜索。中国专利申请03109847.9(公开号CN1536509A,公开日2004.10.31)公开了一种倒排索引存储方法、倒排索引机制以及在线更新的方法,特此引用作为参考。
全文搜索引擎有两个主要的性能指标:索引建立速度和查询响应时间,这两个指标的提高,在很大程度上取决于搜索引擎所使用的索引结构和相应的搜索方法。好的索引结构应当能提高索引建立速度,缩短查询响应时间。
一种传统的索引方法是使用磁盘上的两个索引文件,即主索引文件和二级索引文件。当更新磁盘上的索引时,例如向主索引文件插入新文档时,需要频繁打开和关闭主索引文件,导致更新速度缓慢。
因此,一般来说,在索引过程中,并不是每次新的文档加入进去索引都重新进行一次索引文件的写入操作,而是先在内存中进行索引操作,并根据一定的批量,进行文件的写入。这个批次的间隔越大,文件的写入次数越少,但占用内存会很多。反之占用内存少,但文件IO操作频繁,索引速度会很慢。
现有技术中没有一种有效的技术来对这种文件的写入次数进行有效的控制。
发明内容
为此,本发明的一个目的是改进索引文件的数据结构,以提高磁盘索引文件的建立和更新的速度。
一方面,本发明提供一种建立/扩展索引的方法,该索引包含一个第一子索引文件和一个第二子索引文件,该方法包含以下步骤:
(a)在内存中对新插入的数据源进行生成倒排索引的索引操作;
(b)如果索引操作所包含的源数据的个数达到一个预定的第一阀值k1,则将所生成的倒排索引,作为一个最小的索引组,顺序地写入第一子索引文件;
(c)如果第一子索引文件中最小的索引组的个数达到一个预定的第二阀值k2,则把这k2个索引组合并成一个更大的索引组,顺序地写入第二子索引文件;否则返回步骤(a);
(d)如果第二子索引文件中最小的索引组的个数达到第三阀值k3,则把这k3个索引组合并成一个更大的索引组,顺序地写入第一子索引文件,返回步骤(c);否则,返回步骤(a)。
按照本发明的一个实施例,将第二阀值K2选择得等于第三阀值K3。
按照本发明的一个实施例,将第二阀值K2和第三阀值K3选择得等于第一阀值K1。
按照本发明的一个实施例,源数据是文档,包括但不限于Word文档,PDF文档,HTML文档。
按照本发明的一个实施例,索引文件存储在非易失性存储器中,包括但不限于磁盘、光盘、光磁盘。
按照本发明的一个实施例,合并索引组的步骤包括合并各倒排索引组中对应于相同的索引项的块。
另一方面,本发明提供一种查询索引文件中的索引信息的方法,其中,该索引文件包含按大小顺序排列的若干个索引组,每个索引组含有对源数据的倒排索引,该方法包含:
访问当前索引文件中包含对应该查询词的索引组;
读取对应该查询词的第一个块的索引信息;
重复读取其余索引组中其它的对应该查询词的块,直到其余索引组中没有对应该查询词的块;
返回所读取的所有的块的索引信息。
另一方面,本发明提供一种索引结构,包含结构相同的两个索引文件,每个索引文件包含按大小顺序排列的若干个索引组,每个索引组含有对源数据的倒排索引,其中,最小的索引组包含的数据源的数量为k1,其余索引组包含的源数据的数量为k1*k2 i(i>=1),并且包含相同数量的源数据的索引组的个数小于k2。
使用本发明的基于索引组的索引结构的建立索引的方法,索引文件中索引组的个数随着被索引的文档的数量的迅速增长而缓慢地增长。由于小索引组总是位于大索引组的顶部,索引更新大都发生在小的索引组中,因而减少了大索引组的IO操作,由此减少总的IO操作的次数,因此提高了索引建立速度。由于小的索引组的合并速度较快,而大的索引组保持相对稳定,因此能够减少查询响应时间。另外,通过对内存索引操作包含的源数据的个数k1的选择,可以调节对内存索引操作对内存的占用,通过对要被合并的索引组的个数k2(k3)的选择,可以调节查询响应时间。
附图说明
图1A表示按照本发明的索引数据结构。
图1B表示一种倒排索引文件的逻辑结构。
图2表示按照本发明的扩展索引的方法的流程图。
图3表示按照本发明一个实施例的一个查询过程。
图4A-4C是表示本发明的合并索引中的索引组的方法的示意图。
具体实施方式
参看图1A,表示按照本发明的索引的数据结构。
按照本发明的索引文件140由索引组150组成,而索引组150由块160组成。
索引文件140由大小可能不同的索引组150组成。在本发明中,索引组的大小,指的是索引组所包含的数据源的个数。例如,图中所示的索引文件140包含N个索引组150-1至150-N,按照本发明,这些索引组按照大小顺序排列,最小的索引组出现在文件的尾部。下文将结合图2和图4,说明这些索引组在索引文件中是如何排列的。
索引组150由块160。图1A中表示的索引组150,包含k个块160-1至160-K。
一个块160包含一个给定索引项的倒排索引(inverted index),在物理上表现为含有特定索引项的索引信息的连续盘空间。
倒排索引是现有技术中为了提高查询的速度和准确性而采用的一种索引结构。倒排索引,是一定数量的排序的索引项分别与一定数量的源数据之间的映射关系的集合,每个索引所对应的源数据也按照一定的关系排序。例如,关键词倒排索引,是排序的关键词与源数据之间的映射关系的列表,对应每个关键词的源数据按照一定的顺序(例如按照词频)排列。倒排索引中的索引块,在物理上表现为含有特定索引项的索引信息的连续盘空间。
参看图1B,图中的列表例示关键词倒排索引文件的逻辑结构。该列表中包含按照字母顺序排序的索引项”an”、”index”和”inverted”,每个索引项分别对应一定数量的文档。例如,索引项“index”对应于3个文档,按照“index”在这三个文档中出现的频率,它们在列表中的顺序为文档2、文档1和文档3。列表中所示的索引项“index”与3个排序的文档2、文档1和文档3以及索引项在这些文档中的出现频率,构成了一个索引块。
要指出的是,图1A中表示,在索引文件140中,将不同大小的索引组的个数,记录在索引文件的头部。然而,所属技术领域的熟练人员知道,不同大小的索引组的个数及其变化,并不一定要在索引文件中记录,而是可以有其它选择。例如,可以在一个单独的表中,记录不同大小的索引组的个数;再例如,可以为不同大小的索引组设置不同的计数器。
另外,如图1A中所示,每个索引组150中还可以保存其它信息,例如块的个数、每个块在索引组中的偏移地址、以及下一个索引组在索引文件140中的偏移地址。类似地,所属技术领域的熟练人员应当知道,这些信息也可以在索引组以外的地方保存,因此无须赘述。
为了更好地理解本发明,图1A中还表示了其它相关信息,如索引阵列130、索引项-索引项ID(标识)映射表110、索引项ID(标识)-索引映射表120。
图1A所示的索引阵列130,有索引文件140-1至140-M。在实际应用中,搜索引擎为响应用户的不同要求可能需要多个不同的索引文件。例如,索引文件140-1可以是一个关键词索引文件、分类索引文件,等等。
一般来说,在建立索引时,除了创建索引文件,还要建立一系列与索引文件相关联的映射表。例如,映射表110、映射表120、文档ID-物理地址映射表(未予示出)。
所属技术领域的技术人员知道,文档ID-物理地址映射表,用于记录每个文档与存储该文档的物理地址之间的对应关系。在通过索引文件查找到需要的文档后,利用这个映射表就可以访问该文档。索引项-索引项ID映射表110,存储每个索引项与一个标识符的对应关系。由于标识符与索引项相比,格式比较统一(例如是数字),所以在索引文件中可以记录索引项标识符,以代替对应的索引项。
映射表120记录每个索引项的索引信息在索引文件中的位置。按照本发明的一个实施例,在表120中,对于每个索引项ID,可记录该索引项所对应的索引文件中的第一个块的地址,例如,可记录相应的索引文件ID、索引组ID和块偏移地址。
视具体实现的需要而定,还可以有其它的映射表,例如索引文件-索引文件ID映射表、索引组-索引组ID映射表等等。
上述映射表的创建和更新,都是所属技术领域的技术人员熟知的,在现有技术中有各种各样的实现方案,因此不再赘述。
针对这样的索引文件结构,本发明提出了一种基于对索引组的合并而建立或扩展索引文件的方法。
图2表示按照本发明的由计算机执行的扩展索引的方法的流程图。在这个方法中,将一个索引划分为两个子文件,即第一子索引文件和第二子索引文件。
一开始,计算机系统在内存中对新插入的数据源进行索引操作,以生成倒排索引(步骤210)。
所属技术领域的技术人员知道,一般来说,在内存中进行索引操作,例如对文档进行关键词索引操作,包括以下过程:读取一个文档,分析文档中的词元,对于每个词元,统计其在该文档中的出现频率,然后将结果(文档、词元、出现频率)插入内存中的倒排索引。上述过程,在以上引用的中国专利申请03109847.9中,也有相关的描述,因此不再赘述。
需要指出的是,输入的数据源可以是计算机可读的任何电子文档,例如一但不限于一Word文档、PDF文档或HTML文档,具体取决于解析转换器的设计,然而,这并不属于本发明的范畴,因此不再详述。
在步骤220,判断索引操作所包含的源数据的个数是否小于一个预定的第一阀值k1。就是说,判断内存中当前的倒排索引中所包含的源数据的个数是否小于k1。
如果是,则对新插入的数据源的索引操作结束,过程将返回到步骤210,对下一个数据源进行索引操作。
如果不是,即索引操作所包含的源数据的个数等于预定的阀值k1,则将所生成的倒排索引,作为一个最小的索引组,写入一个第一子索引文件(步骤230)。
然后,在步骤240,判断第一子索引文件中最小的索引组的个数,是否已经达到一个预定的第二阀值k2。
如果不是,则对新插入的数据源的索引操作结束,过程将返回到步骤210,对下一个数据源进行索引操作。
如果是,则在步骤250,把这k2个索引组合并成一个更大的索引组,顺序地写入第二子索引文件;
然后,在步骤260,判断第二子索引文件中最小的索引组的个数,是否已经达到一个第三阀值k3;
如果不是,则对新插入的数据源的索引操作结束,过程将返回到步骤210,对下一个数据源进行索引操作。
如果是,则在步骤270,把这k3个索引组合并成一个更大的索引组,顺序地写入第一磁盘索引文件。然后,返回步骤240。
按照本发明的一个实施例,K2=K3。按照本发明的另一个实施例,选择K2和/或K3等于K1。
可以看出,由于k1代表在内存中进行索引操作所包含的最大源数据(例如文档)数,因此,在给定条件下,k1越小,进行索引操作对内存的容量占用的越少。索引文件中最小的索引组的个数达到k2(k3)时,就被合并成一个更大的索引组,因此,k2(k3)越小,合并的操作越频繁,索引更新的速度越快,使查询响应时间缩短。
按照本发明的实施例,第一子索引文件和第二子索引文件被存储在非易失性存储器上。非易失性存储器包括但不限于磁盘、光盘等存储介质。
按照本发明,合并索引组的步骤可以进一步包括合并各索引组中对应于相同的索引项的块。与此相关联,可以修改合并后所生成的索引组的块的个数、每个块的偏移地址、以及下一个索引组的偏移地址。
显然,在上述方法过程中,判断一定大小的索引组的个数,可以有多种方式,例如可以读取索引文件中一定大小的索引组的数目。这个数目在每次向索引文件中写入一个索引组时被更新。另外,不同大小的索引组的个数,也可以用不同的计数器来记录。每当向索引文件中写入一个索引组,相应的计数器就被递增1。每当一定大小的k2(或k3)个索引组被合并时,相应的计数器就被清零。相应地,在合并索引组时,可以以不同方式修改对第一子索引文件和第二子索引文件中不同大小的索引组的个数的记录。
图3表示按照本发明一个实施例由检索系统进行的一个查询过程。
按照本发明的一个实施例,检索系统可以在前文所述的本发明的磁盘索引文件上进行查询操作。一开始,假设用户向检索系统输入一个查询词(例如关键词)。检索系统获得对应的查询词ID(或索引项ID)(步骤310)。例如,可以通过图1A的映射表110,获得对应的查询词ID。
在步骤320,检索系统访问对应该查询词的第一个块。如前文结合图1A所说明的那样,检索系统例如可以通过数据的各种映射关系,例如通过索引项与索引文件ID、索引组ID和块偏移地址等的映射关系(例如映射表120),获得每个索引项的索引信息在索引文件中的位置,即查询词在索引文件中对应的索引块。由于索引文件的结构,该第一个块位于索引文件中靠前的较大索引组中。
在步骤330,读取索引文件中对应该查询词的第一个块。然后,在步骤340,判断下一个块是否为空。可以通过搜索当前索引文件中其余索引组中是否存在对应该查询词的块来进行判断。
如果在步骤340中判断下一个块不为空,即还有对应于该查询词的块,则在步骤350,读取下一个块。然后返回步骤340,重复读取下一个块的操作,直到下一个块为空。
如果在步骤340中判断下一个块为空,则在步骤360,则返回所读取的所有的块。
这样,就完成了针对用户提交的查询词在一个索引文件中获得所有索引信息的处理。使用本发明的索引结构时,搜索系统可以在另一个索引文件中进行同样的操作,由此能进一步处理索引信息,把查询结果返回给用户。
图4A示意性地表示本发明的合并索引组的原理。图中最顶部的示意图中,水平条上的左右两个柱子代表两个索引文件:index0(索引文件1)和index1(索引文件2)。图中的箭头表示索引组的合并次序。
一开始,索引文件1和索引文件2都是空的。当一个索引组生成后,该索引组被写到索引文件1,这个结果由插在左边柱子上的1个圆盘表示。之后,第2个索引组生成,该第2个索引组被顺序地写到索引文件1,这个结果由插在柱子上的2个圆盘表示。之后,第3个索引组生成,该第3个索引组被顺序地写到索引文件1,这个结果由插在柱子上的3个圆盘表示。这时,将这三个索引组合并,写到索引文件2中。这个结果由插在右边柱子上的1个更大的圆盘表示,如图中的右上部分所示。此时,左边的柱子变空,表示索引文件1中没有任何内容。
然后,当第4、5、6个索引组生成时,它们以与上述的同样的方式被写入索引文件1,然后被合并成一个更大的索引组,顺序地写到索引文件2中。从右下部分可见,此时,插在右边柱子上的是2个大圆盘,这两个大圆盘代表两个大索引组。同样,此时左边的柱子变空,表示索引文件1中没有任何内容。
从以上过程可知,每当一个索引文件(例如索引文件1)中新生成的索引组数量达到一个数值k2时(本案例中k2=3),就将这k2个索引组就被合并成一个更大的索引组,并写入另一个索引文件(索引文件2)。虽然没有进一步说明,但实际上,在索引文件2中,当这样合并成的大索引组本身达到一定的数量(例如k3=3)时,也将被合并成一个更大的索引组,并被写入另一个索引文件(索引文件1)。
本例中,假设索引组1-索引组6都包含相同数量k1的源数据(例如文档),但是对k1的具体值没有规定。
图4B表示本发明的合并索引组的一个具体过程的示意图。图中用虚线方框(421、422、423)表示一个索引,它由子索引文件1和子索引文件2代表,而不同的方框则表示在合并过程中不同时刻的索引的内容。另外,为了简明,在本例中假设k1=k2=k3=10。方框41表示,在某个时刻,子索引文件2是空的,而子索引文件1中已经有m-1个索引组G1 10、G2 10、...、Gm-1 10,其中,上标10表示索引组的大小。上文已经指出,在本发明的语境中,索引组的大小,表示该索引组所包含的源数据(例如文档)的个数。因此,例如G1 10表示索引组G1含有10个文档。此时,又生成了一个同样大小的索引组Gm 10。
按照本发明,如果m<10,则将Gm 10写到子索引文件1中。如方框422所示,此时,子索引文件1中的索引组的个数变成m,而子索引文件2无变化。
然而,如果m=10,则将这m-1个索引组G1 10、G2 10、...、Gm-1 10与Gm 10合并成一个含有100个文档的索引组G100 1,并将合并后的索引组G100 1写到子索引文件2中。同时,子索引文件1变空。这个过程如方框423所示。
图4C是图4B所示的合并索引组的过程的继续,图中的方框431-435表示与图4b中的相同的索引。如方框431所示,在某个时刻,子索引文件1中含有m-1个大小为10的索引组,子索引文件2中含有n个大小为100的索引组。此时,又生成了一个大小为10的索引组Gm 10。
如果m<10,则将Gm 10写到子索引文件1中。如方框432所示,此时,子索引文件1中的索引组数变成m个,而子索引文件2无变化。
如果m=10且n<9,则将这m-1个索引组G1 10、G2 10、...、Gm-1 10与Gm 10合并成一个含有100个文档的索引组,并写到子索引文件2中,变成索引组G100 n+1同时,子索引文件1变空。这个过程如方框433所示。
如果m=10且n=9,则将这m-1个索引组G1 10、G2 10、...、Gm-1 10与Gm 10合并成一个含有100个文档的索引组,并写到子索引文件2中。由于子索引文件2中已经有了9个含有100个文档的索引组,因此新合并的索引组变为第10个含有100个文档的索引组G100 10。按照本发明,将这个新合并的索引组与子索引文件2中的9个索引组进一步合并为一个含有103=1000个文档的索引组G1 1000,并写到子索引文件1中。此时子索引文件2变空。这个过程如方框434和435所示。
由上的过程可以看出,索引组的合并的主要在较小的索引组中发生。索引组越大越稳定。
下面进一步考察本发明方法的技术效果,为了简明,仍然假设k1=k2=k3=k。一般来说,当一个磁盘索引文件被扩展到一定阶段时,磁盘索引文件的两个子文件1、2中包含的大小不同的索引组,可表示如下(i>=3):
子索引文件1:G(ki),G(ki-2)...,...,G(k3),G(k3),G(k3)...G(k),G(k),G(k),G(k),G(k),G(k),G(k),G(k),G(k)
子索引文件2:G(ki+1)...G(ki-1)...,...,G(k2),G(k2)...
其中,k为最小索引组的大小,即最小索引组所包含的数据源的个数,G(ki)表示一个含有ki个数据源的索引组。注意到这两个子索引文件的一个存储大小为k的奇数次幂的索引组,另一个存储大小为k的偶数次幂的索引组。
如果大小为ki的索引组的个数达到k,则将所有这k个索引组合并成一个更大的索引组,其大小为ki+1。当子索引文件1中的大小为k的索引组的个数达到k时,将所有这种索引组合并成子索引文件2中的大小为k*k的更大索引组,随着这个递增过程的进行,有一个时刻,大小为k*k的索引组的个数达到k-1,大小为k的索引组的个数达到k-1。此时,如果子文件1再增加一个大小为k的索引组,则将大小为k的k个索引组,全部合并成子索引文件2中的一个新的大小为k*k的索引组。以上的合并过程遵循以下的规则:较小的索引组总是被放在大索引组之上,或者说,每个子文件中最小的索引组总是出现在该子索引文件的尾部。
假设最小的索引组包含的文档个数k=10,可以算出,索引文件中索引组的总数不大于文档总数的各位上的数字值的总和。例如,如果要索引的文档的个数为2789870,则索引组的总数为2+7+8+9+8+7=41,其在磁盘索引文件中的排列如下所示。
G(106),G(106),G(104),G(104),G(104),G(104),G(104),G(104),G(104),G(104),G(102),G(102),G(102),G(102),G(102),G(102),G(102),G(102)
G(105),G(105),G(105),G(105),G(105),G(105),G(105),G(103),G(103),G(103),G(103),G(103),G(103),G(103),G(103),G(103),G(10),G(10),G(10),G(10),G(10),G(10),G(10)
由此可见,使用本发明的基于索引组的索引结构,索引文件中索引组的个数随着被索引的文档的数量的迅速增长而缓慢地增长。最大的索引组总是位于索引文件的头部,小索引组总是位于大索引组的尾部,从而索引更新大都发生在小的索引组中,减少了大索引组的IO操作,由此减少总的IO操作的次数,因此提高了索引建立速度。由于小的索引组的合并速度较快,而大的索引组保持相对稳定,因此能够减少查询响应时间。如果因为索引的更新速度变慢而导致查询响应时间增加时,可以自动降低k2(k3),以加快索引的更新速度。并且,还可以根据内存的容量,灵活地调节在内存中进行索引操作所包含的最大文档数k1,例如,当可用内存变小时,自动降低k1。
要指出的是,本发明的上述方法可以以存储在计算机可读的存储介质中的计算机可执行程序的方式实现。这些存储介质包括但不限于:各种存储器和存储单元,半导体设备,磁盘单元例如光、磁和磁光盘。
以上结合附图对本发明优选实施例进行了详细地描述,这些实施例只是示例行的而不是限制性的,本领域技术人员可以在不背离本发明的精神实质情况下作出各种修改和变型。
Claims (12)
1.一种扩展索引的方法,该索引包含一个第一子索引文件和一个第二子索引文件,该方法包含以下步骤:
(a)在内存中对新插入的数据源进行生成倒排索引的索引操作;
(b)如果索引操作所包含的源数据的个数达到一个预定的第一阀值k1,则将所生成的倒排索引,作为一个最小的索引组,顺序地写入第一子索引文件;
(c)如果第一子索引文件中最小的索引组的个数达到一个预定的第二阀值k2,则把这k2个索引组合并成一个更大的索引组,顺序地写入第二子索引文件;否则返回步骤(a);
(d)如果第二子索引文件中最小的索引组的个数达到第三阀值k3,则把这k2个索引组合并成一个更大的索引组,顺序地写入第一子索引文件,返回步骤(c);否则,返回步骤(a)。
2.按照权利要求1的方法,特征在于,K2等于K3。
3.按照权利要求1的方法,特征在于,K2和K3至少一个等于第一阀值K1。
4.按照权利要求1、2或3的方法,特征在于,第一子索引文件和第二子索引文件存储在包括磁盘、光盘、光磁盘等的非易失性存储器中。
5.按照权利要求1、2或3的方法,其中,源数据是包括Word文档、PDF文档、HTML文档等的任何电子文档。
6.按照权利要求5的方法,其中,倒排索引是关键词索引。
7.按照权利要求1的方法,特征在于,合并索引组的步骤包括合并各倒排索引组中对应于相同的索引项的块。
8.按照权利要求1或7的方法,特征在于,合并索引组的步骤进一步包括更新对相关子索引文件中不同大小的索引组的个数的记录。
9.一种查询索引文件中的索引信息的方法,其中,该索引文件包含按大小顺序排列的若干个索引组,每个索引组含有对源数据的倒排索引,该方法包含:
访问当前当前索引文件中包含对应该查询词的索引组;
读取对应该查询词的第一个块的索引信息;
重复读取其余索引组中其它的对应该查询词的块,直到其余索引组中没有对应该查询词的块;
返回所读取的所有的块的索引信息。
10.一种索引结构,包含结构相同的两个索引文件,每个索引文件包含按大小顺序排列的若干个索引组,每个索引组含有对源数据的倒排索引,其中,最小的索引组包含的数据源的数量为k1,其余索引组包含的源数据的数量为k1*k2 i(i>=1),并且包含相同数量的源数据的索引组的个数小于k2。
11.按照权利要求10的索引结构,其中,k1=k2。
12.按照权利要求11或12的索引结构,其中,源数据是电子文档,并且倒排索引是关键词倒排索引。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101242831A CN100458779C (zh) | 2005-11-29 | 2005-11-29 | 扩展索引的方法 |
US11/562,495 US7689574B2 (en) | 2005-11-29 | 2006-11-22 | Index and method for extending and querying index |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101242831A CN100458779C (zh) | 2005-11-29 | 2005-11-29 | 扩展索引的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1979469A true CN1979469A (zh) | 2007-06-13 |
CN100458779C CN100458779C (zh) | 2009-02-04 |
Family
ID=38088710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101242831A Expired - Fee Related CN100458779C (zh) | 2005-11-29 | 2005-11-29 | 扩展索引的方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7689574B2 (zh) |
CN (1) | CN100458779C (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101295323B (zh) * | 2008-06-30 | 2011-11-02 | 腾讯科技(深圳)有限公司 | 一种用于索引更新的处理方法和系统 |
CN101882142B (zh) * | 2009-05-08 | 2012-12-26 | 富士通株式会社 | 索引合并方法和索引合并装置 |
CN102890682A (zh) * | 2011-07-21 | 2013-01-23 | 腾讯科技(深圳)有限公司 | 构建索引的方法、检索方法、装置及系统 |
CN102087646B (zh) * | 2009-12-07 | 2013-03-20 | 北大方正集团有限公司 | 一种索引建立方法及装置 |
CN103177117A (zh) * | 2013-04-08 | 2013-06-26 | 北京奇虎科技有限公司 | 信息索引系统及信息索引的更新方法 |
WO2015027902A1 (en) * | 2013-08-26 | 2015-03-05 | Tencent Technology (Shenzhen) Company Limited | Method, computing device, and computer program product for storing file index |
CN104424267A (zh) * | 2013-08-29 | 2015-03-18 | 北大方正集团有限公司 | 一种索引数据插入方法及系统 |
CN105138669A (zh) * | 2015-09-07 | 2015-12-09 | 天脉聚源(北京)传媒科技有限公司 | 一种合并增量索引与总索引的方法及装置 |
CN105447030A (zh) * | 2014-08-29 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种索引处理方法与设备 |
CN112559521A (zh) * | 2020-12-11 | 2021-03-26 | 广州海量数据库技术有限公司 | 话单查找方法及系统 |
CN113778345A (zh) * | 2021-11-10 | 2021-12-10 | 阿里云计算有限公司 | 索引的创建方法、计算设备及存储介质 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8209305B2 (en) * | 2006-04-19 | 2012-06-26 | Microsoft Corporation | Incremental update scheme for hyperlink database |
US7730070B2 (en) * | 2007-06-10 | 2010-06-01 | Apple Inc. | Index aging and merging |
US20090193406A1 (en) * | 2008-01-29 | 2009-07-30 | James Charles Williams | Bulk Search Index Updates |
US8082258B2 (en) * | 2009-02-10 | 2011-12-20 | Microsoft Corporation | Updating an inverted index in a real time fashion |
US20110153582A1 (en) * | 2009-12-22 | 2011-06-23 | Daniel Buchmann | Handling of classification data by a search engine |
US8244701B2 (en) * | 2010-02-12 | 2012-08-14 | Microsoft Corporation | Using behavior data to quickly improve search ranking |
US8244700B2 (en) * | 2010-02-12 | 2012-08-14 | Microsoft Corporation | Rapid update of index metadata |
US10394754B2 (en) * | 2010-03-08 | 2019-08-27 | International Business Machines Corporation | Indexing multiple types of data to facilitate rapid re-indexing of one or more types of data |
US8983947B2 (en) * | 2011-09-30 | 2015-03-17 | Jive Software, Inc. | Augmenting search with association information |
CN103714096B (zh) * | 2012-10-09 | 2018-02-13 | 阿里巴巴集团控股有限公司 | 基于Lucene的倒排索引系统构建、数据处理方法及装置 |
CN103207907B (zh) * | 2013-03-28 | 2016-06-29 | 新浪网技术(中国)有限公司 | 一种索引文件合并方法及装置 |
CN104572643B (zh) * | 2013-10-10 | 2018-06-19 | 北大方正集团有限公司 | 搜索方法和搜索引擎 |
US10447040B2 (en) | 2014-10-15 | 2019-10-15 | Cummins Power Generation Ip, Inc. | Programmable inverter for controllable grid response |
CN104834726B (zh) * | 2015-05-13 | 2017-12-08 | 华中科技大学 | 一种面向微博实时搜索的自适应索引方法 |
US11157477B2 (en) | 2018-11-28 | 2021-10-26 | International Business Machines Corporation | Handling queries in document systems using segment differential based document text-index modelling |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100285265B1 (ko) * | 1998-02-25 | 2001-04-02 | 윤덕용 | 데이터 베이스 관리 시스템과 정보 검색의 밀결합을 위하여 서브 인덱스와 대용량 객체를 이용한 역 인덱스 저장 구조 |
US7080091B2 (en) * | 2002-05-09 | 2006-07-18 | Oracle International Corporation | Inverted index system and method for numeric attributes |
US7016914B2 (en) * | 2002-06-05 | 2006-03-21 | Microsoft Corporation | Performant and scalable merge strategy for text indexing |
US7702666B2 (en) * | 2002-06-06 | 2010-04-20 | Ricoh Company, Ltd. | Full-text search device performing merge processing by using full-text index-for-registration/deletion storage part with performing registration/deletion processing by using other full-text index-for-registration/deletion storage part |
CN1292371C (zh) * | 2003-04-11 | 2006-12-27 | 国际商业机器公司 | 倒排索引存储方法、倒排索引机制以及在线更新的方法 |
US7630963B2 (en) * | 2003-06-30 | 2009-12-08 | Microsoft Corporation | Fast ranked full-text searching |
-
2005
- 2005-11-29 CN CNB2005101242831A patent/CN100458779C/zh not_active Expired - Fee Related
-
2006
- 2006-11-22 US US11/562,495 patent/US7689574B2/en not_active Expired - Fee Related
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101295323B (zh) * | 2008-06-30 | 2011-11-02 | 腾讯科技(深圳)有限公司 | 一种用于索引更新的处理方法和系统 |
CN101882142B (zh) * | 2009-05-08 | 2012-12-26 | 富士通株式会社 | 索引合并方法和索引合并装置 |
CN102087646B (zh) * | 2009-12-07 | 2013-03-20 | 北大方正集团有限公司 | 一种索引建立方法及装置 |
CN102890682A (zh) * | 2011-07-21 | 2013-01-23 | 腾讯科技(深圳)有限公司 | 构建索引的方法、检索方法、装置及系统 |
CN102890682B (zh) * | 2011-07-21 | 2017-08-01 | 腾讯科技(深圳)有限公司 | 构建索引的方法、检索方法、装置及系统 |
CN103177117B (zh) * | 2013-04-08 | 2016-06-01 | 北京奇虎科技有限公司 | 信息索引系统及信息索引的更新方法 |
CN103177117A (zh) * | 2013-04-08 | 2013-06-26 | 北京奇虎科技有限公司 | 信息索引系统及信息索引的更新方法 |
WO2015027902A1 (en) * | 2013-08-26 | 2015-03-05 | Tencent Technology (Shenzhen) Company Limited | Method, computing device, and computer program product for storing file index |
CN104424267A (zh) * | 2013-08-29 | 2015-03-18 | 北大方正集团有限公司 | 一种索引数据插入方法及系统 |
CN105447030A (zh) * | 2014-08-29 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种索引处理方法与设备 |
CN105447030B (zh) * | 2014-08-29 | 2019-06-11 | 阿里巴巴集团控股有限公司 | 一种索引处理方法与设备 |
CN105138669A (zh) * | 2015-09-07 | 2015-12-09 | 天脉聚源(北京)传媒科技有限公司 | 一种合并增量索引与总索引的方法及装置 |
CN112559521A (zh) * | 2020-12-11 | 2021-03-26 | 广州海量数据库技术有限公司 | 话单查找方法及系统 |
CN113778345A (zh) * | 2021-11-10 | 2021-12-10 | 阿里云计算有限公司 | 索引的创建方法、计算设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100458779C (zh) | 2009-02-04 |
US7689574B2 (en) | 2010-03-30 |
US20070124277A1 (en) | 2007-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100458779C (zh) | 扩展索引的方法 | |
US11194780B2 (en) | Early exit from table scans of loosely ordered and/or grouped relations using nearly ordered maps | |
US9672235B2 (en) | Method and system for dynamically partitioning very large database indices on write-once tables | |
KR101972645B1 (ko) | 클러스터링 저장 방법 및 장치 | |
CN102542052B (zh) | 优先散列索引 | |
CN107103032B (zh) | 一种分布式环境下避免全局排序的海量数据分页查询方法 | |
US8452788B2 (en) | Information retrieval system, registration apparatus for indexes for information retrieval, information retrieval method and program | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN110109910A (zh) | 数据处理方法及系统、电子设备和计算机可读存储介质 | |
CN102819601B (zh) | 信息检索方法和信息检索设备 | |
KR101740271B1 (ko) | 온라인 상에서 실시간으로 업데이트되는 대규모 오디오 핑거프린트 데이터베이스의 구축 방법 및 장치 | |
US9529908B2 (en) | Tiering of posting lists in search engine index | |
CN109522271B (zh) | 一种b+树节点的批量插入和删除方法及装置 | |
CN102930060A (zh) | 一种数据库快速索引的方法及装置 | |
JP2012533819A (ja) | 文書インデックス化およびデータクエリングのための方法およびシステム | |
CN105224624A (zh) | 一种实现倒排链快速归并的方法和装置 | |
CN109299143B (zh) | 基于Redis缓存的数据互操作测试知识库的知识快速索引方法 | |
CN101493824A (zh) | 数据库的数据检索方法和装置 | |
CN110413724B (zh) | 一种数据检索方法和装置 | |
JP2007048318A (ja) | リレーショナルデータベースの処理方法およびリレーショナルデータベース処理装置 | |
KR100892406B1 (ko) | 정보 검색 방법 및 그 시스템 | |
KR101311409B1 (ko) | 부분적인 인덱스 rid 정렬을 통한 파티션 스캔 방법 및 장치, 메모리 시스템, 및 데이터 정렬 방법 | |
JP2009187211A (ja) | 情報検索システム、情報検索方法およびプログラム | |
KR101642072B1 (ko) | 하이브리드스토리지장치 및 방법 | |
CN115809248B (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 | ||
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: 20090204 Termination date: 20151129 |
|
CF01 | Termination of patent right due to non-payment of annual fee |