CN102087646B - 一种索引建立方法及装置 - Google Patents

一种索引建立方法及装置 Download PDF

Info

Publication number
CN102087646B
CN102087646B CN 200910241774 CN200910241774A CN102087646B CN 102087646 B CN102087646 B CN 102087646B CN 200910241774 CN200910241774 CN 200910241774 CN 200910241774 A CN200910241774 A CN 200910241774A CN 102087646 B CN102087646 B CN 102087646B
Authority
CN
China
Prior art keywords
index
storage area
index segment
document
threshold value
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
CN 200910241774
Other languages
English (en)
Other versions
CN102087646A (zh
Inventor
徐剑波
童征宇
赵东岩
李晓蕊
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.)
New Founder Holdings Development Co ltd
Peking University
Founder Apabi Technology Ltd
Original Assignee
Peking University
Peking University Founder Group Co Ltd
Beijing Founder Apabi Technology Co Ltd
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 Peking University, Peking University Founder Group Co Ltd, Beijing Founder Apabi Technology Co Ltd filed Critical Peking University
Priority to CN 200910241774 priority Critical patent/CN102087646B/zh
Publication of CN102087646A publication Critical patent/CN102087646A/zh
Application granted granted Critical
Publication of CN102087646B publication Critical patent/CN102087646B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种索引建立方法及装置,主要技术方案包括:监测第一存储区域中存储的包含单文档的索引段的数量;当包含单文档的索引段的数量达到第一阈值时,将包含单文档的索引段合并为包含所述第一阈值文档的索引段;监测第一存储区域中包含第一阈值文档的索引段的数量;当包含第一阈值个文档的索引段的数量达到第二阈值时,将包含第一阈值文档的索引段合并为包含第一阈值乘以第二阈值文档的索引段,并当第一存储区域中所有索引段包含的文档总数达到设定的最大合并阈值时,将第一存储区域中的所有索引段合并为包含最大合并阈值文档的索引段写入第二存储区域,采用该技术方案,减少了写入磁盘的次数,保证了索引更新效率,并且提高了检索效率。

Description

一种索引建立方法及装置
技术领域
本发明涉及信息检索领域,尤其涉及一种索引建立方法及装置。
背景技术
检索引擎的核心技术是索引,索引是包括若干文档的序列。基于信息内容的快速更新,索引中包括的文档序列也需要不断更新。目前,索引更新的问题主要在于为了更新少数文档,需要重写全部索引,而实际上索引中绝大多数文档与此次更新无关。因此,为了减少不必要的更新,在建立索引时普遍采用分段机制,即预先设置索引中包括的文档个数,将索引分成多个子索引,每个子索引称为索引段(segment)。分段机制解决了索引的增量更新问题,即在索引更新时只修改后面的索引段,而不是整个索引。
采用分段机制建立索引即将文档对象一个个加入到索引中的过程,一般在将新的文档对象添加到索引中时,先将其缓存在内存中,而不是立刻写入磁盘。这个缓存操作是为了减少对磁盘的读取操作以提高索引性能,通常,索引程序会提供三个参数用于控制缓存大小以及写入磁盘的频率:
FirstLevelMergeFactor:在将文档对象写入磁盘之前,该参数用于控制存储在内存中的文档对象数量,即在将内存中的所有文档对象作为一个子索引段写入磁盘之前,内存中默认存储FirstLevelMergeFactor个文档对象;
MergeFactor:该参数用于控制磁盘中子索引段的合并频率,即当写入磁盘中的子索引段的数量达到MergeFactor个时,这些子索引段将被合并为一个索引段;
MaxMergeDocs:该参数用于控制合并各个子索引段后得到的索引段中包含的总的文档对象个数,即在合并多个子索引段时,索引程序确保各个子索引段所包含的文档对象的总数不超过MaxMergeDocs个。
根据以上分段机制建立的索引,检索时会遍历索引中包括的所有索引段,以索引段为基本单位独立检索每个索引段内的文档,最后把各个索引段的检索结果合并。因此,如果索引中索引段的数量过多,在检索时要打开、读取、处理的索引文件会更多,因此,会影响检索效率。而如果索引中索引段的数量过少,意味着索引段的容量大,则在进行索引更新时,需要执行多次写入磁盘的操作,势必影响索引更新的效率。
综上所述,索引中索引段的数量直接影响着检索和索引更新的效率,若索引中索引段的数量过多,则影响检索的效率;若索引中索引段的数量过少,则影响索引更新的效率。
发明内容
有鉴于此,本发明实施例提供一种索引建立方法及装置,采用该技术方案,减少了写入磁盘等用于存储最终索引段的区域的次数,保证了索引更新效率,并且提高了检索效率。
本发明实施例通过如下技术方案实现:
根据本发明实施例的一个方面,提供了一种索引建立方法。
根据本发明实施例提供的索引建立方法,包括:
监测第一存储区域中存储的包含单文档的索引段的数量;
当所述包含单文档的索引段的数量达到第一阈值时,将所述包含单文档的索引段合并为包含所述第一阈值文档的索引段;
监测所述第一存储区域中存储的包含所述第一阈值文档的索引段的数量;
当所述包含所述第一阈值文档的索引段的数量达到第二阈值时,将所述包含所述第一阈值文档的索引段合并为包含所述第一阈值乘以所述第二阈值文档的索引段,并当所述第一存储区域中所有索引段包含的文档总数达到设定的最大合并阈值时,将所述第一存储区域中的所有索引段合并为包含所述最大合并阈值文档的索引段写入第二存储区域。
根据本发明实施例的另一个方面,还提供了一种索引建立装置。
根据本发明实施例提供的索引建立装置,包括:
第一监测单元,用于监测第一存储区域中存储的包含单文档的索引段的数量;
第一合并单元,用于当所述第一监测单元监测的包含单文档的索引段的数量达到第一阈值时,将所述包含单文档的索引段合并为包含所述第一阈值文档的索引段;
第二监测单元,用于监测第一存储区域中存储的包含所述第一阈值文档的索引段的数量;
第二合并单元,用于当所述第二监测单元监测的包含所述第一阈值文档的索引段的数量达到第二阈值时,将所述包含所述第一阈值文档的索引段合并为包含所述第一阈值乘以所述第二阈值文档的索引段,并当所述第一存储区域中所有索引段包含的文档总数达到设定的最大合并阈值时,将所述第一存储区域中的所有索引段合并为包含所述最大合并阈值文档的索引段写入第二存储区域。
通过本发明实施例提供的上述至少一个技术方案,在建立索引时,首先监测第一存储区域中保存的包含单文档的索引段的数量,当包含单文档的索引段的数量达到第一阈值时,将包含单文档的索引段合并为包含第一阈值文档的索引段;然后进一步监测第一存储区域中包含第一阈值文档的索引段的数量,当包含第一阈值文档的索引段的数量达到第二阈值时,将包含第一阈值文档的索引段合并为包含第一阈值乘以所述第二阈值文档的索引段,并当第一存储区域中所有索引段包含的文档总数达到设定的最大合并阈值时,将第一存储区域中的所有索引段合并为包含最大合并阈值文档的索引段写入第二存储区域,根据该技术方案,在第一存储区域中增加了索引段的合并过程,减少了写入第二存储区域的频率,并且增加了最终索引段中包含的文档数量,在索引文档数目一定时减少了索引段的个数,从而在不影响检索性能的前提下,提高了检索效率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例提供的索引建立方法流程图;
图2为本发明实施例提供的管理队列示意图;
图3为本发明实施例提供的对索引文档的合并及写入磁盘的控制流程图;
图4为本发明实施例提供的对索引文档的合并示意图;
图5为本发明实施例提供的对磁盘中的索引段优化合并的流程图;
图6为本发明实施例提供的索引的建立装置示意图一;
图7为本发明实施例提供的索引的建立装置示意图二;
图8为本发明实施例提供的索引的建立装置示意图三;
图9为本发明实施例提供的索引的建立装置示意图四。
具体实施方式
为了给出保证索引更新效率不下降的前提下提高检索效率的实现方案,本发明实施例提供了一种索引建立方法及装置,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明实施例中,通过在第一存储区域中增加一级合并,减少写入第二存储区域的频率,并且增加了最终索引段中的文档数量,减少了索引段的个数,从而在不影响检索性能的前提下,提高了检索效率。
本发明实施例中,第一存储区域为待索引文档初始写入的临时存储区域,例如,内存、闪存等;第二存储区域为文档合并为索引段后的存储区域,例如,磁盘、硬盘等存储空间。
以下描述中,以第一存储区域为内存,第二存储区域为磁盘为例进行描述:
本发明一个实施例中,在已有参数FirstLevelMergeFactor、MergeFactor以及MaxMergeDocs的基础上,增加了如下参数:
最大合并阈值-MemMaxMergeDocs,该参数表示内存中可容纳的最大文档数量,该参数为根据内存的实际使用情况设定,较佳情况下,该参数设置为:
FirstLevelMergeFactor乘以MergeFactor的N次方;
目标合并文档数-TargetMergeDocs,该参数表示当前合并的索引段中包含的文档数量,该参数为变量,一般情况下,其初始值为FirstLevelMergeFactor,该参数的更新公式为:
TargetMergeDocs=TargetMergeDocs*MergeFactor;
其中:等号前面的“TargetMergeDocs”为更新后的值,等号后面的“TargetMergeDocs”为更新前的值,MergeFactor为磁盘中子索引段的合并频率。
根据本发明实施例,首先提供了一种索引建立方法,如图1所示,该方法主要包括如下步骤:
步骤101、索引一篇文档,在内存中为该文档创建一个索引段并保存。
步骤102、监测内存中保存的包含单文档的索引段的数量。
步骤103、判断内存中保存的包含单文档的索引段的数量是否达到第一阈值,若是,则执行步骤104,否则返回步骤101。
本发明优选实施例中,第一阈值的取值根据内存空间的大小确定,一般情况下,内存空间越大,第一阈值可以设置的相对较大。
步骤104、将包含单文档的索引段合并为一个包含第一阈值个文档的索引段。
步骤105、监测内存中包含第一阈值个文档的索引段的数量。
步骤106、判断内存中保存的包含第一阈值个文档的索引段的数量达到第二阈值,若是,则执行步骤107,否则返回步骤101。
本发明优选实施例中,第二阈值的取值根据内存空间的大小确定,一般情况下,内存空间越大,第二阈值可以设置的相对较大,并且,第二阈值一般小于第一阈值。
步骤107、将包含第一阈值个文档的索引段合并为一个包含第一阈值乘以第二阈值个文档的索引段,并当内存中所有索引段包含的文档总数达到内存最大合并阈值时,将内存中的所有索引段合并为包含最大合并阈值个文档的索引段写入磁盘。
本发明又一个实施例中,当将内存中的满足写入磁盘的索引段写入到磁盘后,进一步进行如下操作:
判断所有文档是否索引完毕,在确定所有文档索引完毕并且内存中存储有未写入磁盘的索引段时,将未写入磁盘的索引段合并为一个索引段并写入磁盘。
进行以上操作的目的在于避免由于索引完所有文档后内存中保存的索引段中包含的文档数量不满足写入磁盘的要求,而无法写入磁盘的问题,通过该操作,保证所有索引的文档都可以写入到内存中。
本发明又一个实施例中,将内存中的满足写入磁盘的索引段写入到磁盘后,进一步对磁盘中的索引段进行合并,具体合并过程如下:
监测磁盘中包含最大合并阈值个文档的索引段的数量;
当磁盘中包含最大合并阈值个文档的索引段的数量达到第三阈值时,将包含最大合并阈值个文档的索引段合并为一个包含最大合并阈值乘以第三阈值个文档的索引段。
本发明优选实施例中,第三阈值与第二阈值取相同值。
本发明一个实施例提供的方法中,还进一步将磁盘中设定个数的索引段合并为一个索引段,合并得到的索引段中包含的文档数不大于第四阈值。其中,合并的索引段中包含的文档数可以不相同。
本发明优选实施例中,第四阈值为第一阈值、第二阈值、第三阈值的设定次方的乘积。
本发明又一个实施例中,为了进一步减少索引段的数量,在确定所有文档索引完毕并且写入磁盘后,可以进一步根据预设的第五阈值对磁盘中保存的索引段进行优化合并。具体优化的过程包括:将磁盘中包含的文档数小于第五阈值的索引段合并为一个索引段,以及,将磁盘中包含的文档数大于等于第五阈值、小于第四阈值的索引段合并为一个索引段。
以上方案在具体实施时,在内存中维护一个索引段(segment)的管理队列,如图2所示,该管理队列里的segment按照所含文档(doc)的个数由大到小排列,即:
segment1中包含的doc数>segment2中包含的doc数>......>segmentN中包含的doc数。
通过图2所示的管理队列对索引过程进行监控,以控制文档的合并与写入磁盘。在启动索引过程后,对索引文档的合并以及写入磁盘的控制过程,具体如图3所示,包括如下步骤:
步骤301、索引一篇文档,在内存中为该文档创建一个segment,并加入管理队列尾部。
该步骤中,管理队列尾部的segment由于是由新加入的文档形成的segment,因此,管理队列尾部的segment中包含的文档数为1。
步骤302、判断未合并索引文档的数量是否达到FirstLevelMergeFactor(第一阈值),若是,则执行步骤303~步骤311,否则返回步骤301。
该步骤中,当前未合并索引文档的数据也即新加入管理队列中的只包含一个文档的segment的数量。
步骤303、将该FirstLevelMergeFactor个的索引文档合并为一个索引段。
如图4所示,假设FirstLevelMergeFactor=500,在步骤301索引文档之前,管理队列中未合并索引文档(segment)的数量为499,当执行为步骤301,即新加入一个索引文档后,未合并索引文档(segment)的数量为500,则合并后,将该500个只包含一个文档的segment合并为1个包含500个文档的segment。
步骤304、初始化目标合并文档数TargetMergeDocs。
该步骤中,将TargetMergeDocs初始化为合并为最小索引段时要求的文档数,即FirstLevelMergeFactor。
应当理解,该初始化的步骤也可以在执行本流程之前执行,或在步骤301新索引一篇文档后执行。
步骤305、从管理队列尾部开始扫描,并判断当前扫描的segment所含doc数是否小于当前TargetMergeDocs,若是,则执行步骤306,否则结束本轮扫描并执行步骤307。
该步骤中,本轮扫描结束的情况包括:当前扫描的segment中doc个数大于等于当前TargetMergeDocs,或扫描至管理队列头。
步骤306、将当前segment加入待合并队列。
步骤307、判断待合并队列所有segment所含doc数量之和是否大于等于TargetMergeDocs,若否,返回步骤305;若是,执行步骤308。
步骤308、判断当前TargetMergeDocs是否小于MemMaxMergeDocs(最大合并阈值),若是,则执行步骤309,若否,执行步骤310。
步骤309、将当前待合并队列中的segment在内存中合并,继续执行步骤311。
步骤310、将当前待合并队列中的segment合并,并写入磁盘,继续执行步骤311。
步骤311、更新TargetMergeDocs,并判断更新后的TargetMergeDocs是否小于等于MaxMergeDocs(第四阈值),若是,则返回步骤305,否则执行步骤312。
该步骤中,TargetMergeDocs的更新公式如下:
TargetMergeDocs=TargetMergeDocs*MergeFactor;
本实施例中,取第二阈值=第三阈值=MergeFactor。
其中:等号前面为更新后的TargetMergeDocs,作为返回步骤305后当前TargetMergeDocs。
步骤312、判断是否索引完毕,若否,则返回步骤301,若是,则执行步骤313。
步骤313、判断内存中是否还有未写入磁盘的文档,若是,则执行步骤314,否则结束。
步骤314、将内存中未写入磁盘的文档合并为一个索引段并写入磁盘。
根据本发明以上实施例,由于在内存中增加了一级内存合并,降低了写入磁盘的频率,使得最终索引段中可容纳的文档数量提高,减少了索引段的数量,在检索时,加速了检索的效率。
本发明实施例中,内存中索引段可以采取普通的存储方式,即为每一个索引段分配固定的内存空间,当索引段的大小大于一个内存空间时,则再为该索引段分配整数个内存空间,但该种方式容易造成内存空间的浪费,当一个索引段的大小不是内存空间大小的整数倍时,则剩余的不足一个内存空间大小的部分也要被分配一个内存空间。为了避免内存空间的浪费,本发明实施例中在内存中索引段可以采取现有的差量存储技术进行存储。
本发明又一实施例中,还引入了优化合并因子——OptimizeMergeDocs,用于在合并结束后对磁盘中的最终索引段进行优化合并,如图5所示,优化合并过程如下:
步骤501、扫描每个segment中包含的文档数量;
步骤502、将小于OptimizeMergeDocs的索引段合并为一个索引段,将大于等于OptimizeMergeDocs小于MaxMergeDocs的索引段合并为一个索引段。
根据上述优化过程,可以进一步减少最终索引段的数量,使得合并后的结果为若干个包含MaxMergeDocs个文档的最大索引段,一个包含的文档数量在MaxMergeDocs与OptimizeMergeDocs之间的索引段以及一个包含的文档数量小于OptimizeMergeDocs的小索引段,这样在进行索引更新时只需更新最后一个小索引段,从而大大提升索引更新性能。
为了更好地理解本发明实施例提供的技术方案,以下结合具体的实例对本发明实施例进行详细说明:
假设要索引1000万篇文档,一个doc的segment大小为120KB,具体参数定义如下:
FirstLevelMergeFactor(第一阈值)=500;
MergeFactor(第二阈值或第三阈值)=20;
MemMaxMergeDocs(最大合并阈值,此处定义为第一阈值乘以第二阈值)=10000;
MaxMergeDocs(第四阈值)=4000000;
OptimizeMergeDocs(第五阈值)=200000。
根据以上参数定义,内存中最多有500个单文档的segment,约占60MB。将这500个segment合并,由于充分利用了每个内存空间和差量存储技术,合并后的segment将远远小于60MB,根据经验值,合并后占用的内存空间一般不大于1MB。因此,内存最高占用空间为:1MB*19+60MB=79MB。
根据以上参数定义以及本发明实施例提供的以上技术方案,索引完所有文档经历如下过程:
将500个单文档的segment合并为1个包含500文档的segment;
将20个包含500文档的segment合并为1个包含1万文档的segment并写入磁盘;
将20个包含1万文档的segment合并为1个包含20万文档的segment;
将20个包含20万文档的segment合并为1个包含400万文档的segment。
在磁盘中进行优化后,最终磁盘上将生成2个包含400万文档的segment和1个包含20万文档的segment,共3个。如果不进行优化,则在最坏的情况下,segment个数为2个包含400万文档的segment和10个包含20万文档的segment,共12个。
可见,根据本发明实施例可以使最终合并得到的索引段优化到做少,为了更好地体现本发明达到的效果,以下对现有技术索引相同数目的文档得到的索引段进行简单分析:
如果不采用本发明以上实施例提供的技术方案进行索引,为了提高索引段容量,只能尽可能调高FirstLevelMergeFactor和SegmentsMergeFactor,根据经验值,一种较优的情况下,可以设置各参数如下:
FirstLevelMergeFactor=1000,SegmentsMergeFactor=40,MaxMergeDocs=1600000。
根据以上参数设置,内存最高约占120M,索引完所有文档经历如下过程:
将1000个包含单文档的segment合并为1个包含1000文档的segment,并写入到磁盘;
将40个包含1000个文档的segment合并为1个包含4万文档的segment;
将40个包含4万文档的segment合并为为1个包含160万文档的segment。
在优化的情况下,最终磁盘上将生成6个包含160万文档的segment和10个包含4万文档的segment,共16个。而如果不优化,在最坏的情况下,如总的文档数略小于1600万时,将会有40个4万的segment,索引段的数量更多。
与上述实施例所述的索引的建立方法对应,本发明实施例还提供了一种索引的建立装置,如图6所示,该装置包括:
第一监测单元601、第一合并单元602、第二监测单元603以及第二合并单元604;其中:
第一监测单元601,用于监测第一存储区域中存储的包含单文档的索引段的数量;
第一合并单元602,用于当第一监测单元601监测的包含单文档的索引段的数量达到第一阈值时,将包含单文档的索引段合并为一个包含第一阈值个文档的索引段;
第二监测单元603,用于监测第一存储区域中存储的第一阈值个文档的索引段的数量;
第二合并单元604,用于当第二监测单元603监测的包含第一阈值个文档的索引段的数量达到第二阈值时,将包含第一阈值个文档的索引段合并为一个包含第一阈值乘以第二阈值个文档的索引段,并当第一存储区域中所有索引段包含的文档总数达到设定的最大合并阈值时,将第一存储区域中的所有索引段合并为包含所述最大合并阈值个文档的索引段写入第二存储区域。
如图7所示,本发明又一实施例中,图6所示装置还可以进一步包括:
第三合并单元605,用于在第二合并单元604将满足写入第二存储区域的索引段写入到第二存储区域,并且在确定所有文档索引完毕并且第一存储区域中存储有未写入第二存储区域的索引段时,将第一存储区域中未写入第二存储区域的索引段合并为一个索引段并写入第二存储区域。
如图8所示,本发明又一实施例中,图6所示装置还可以进一步包括:
第三监测单元606,以及第四合并单元607;其中:
第三监测单元606,用于监测第二存储区域中包含最大合并阈值个文档的索引段的数量;
第四合并单元607,用于当第三监测单元606监测的包含最大合并阈值个文档的索引段的数量达到第三阈值时,将包含最大合并阈值个文档的索引段合并为一个包含最大合并阈值乘以第三阈值个文档的索引段。
进一步地,一个实施例中,上述第四合并单元607还用于:将第二存储区域中设定个数的索引段合并为一个索引段,合并得到的索引段中包含的文档数不大于第四阈值。
如图9所示,为了使完成索引后包含的索引段的数量更优化,图8所示装置还可以进一步包括用于优化索引段的数量的优化合并单元608,该单元具体用于:
在确定所有文档索引完毕并且写入第二存储区域后,根据预设的第五阈值对第二存储区域中保存的索引段进行优化合并。
一个实施例中,优化合并单元608具体用于:
将第二存储区域中包含的文档数小于所述第五阈值的索引段合并为一个索引段,以及,将第二存储区域中包含的文档数大于等于第五阈值、小于第四阈值的索引段合并为一个索引段。
应当理解,以上索引建立装置所实现的功能与索引建立方法一一对应,对应该装置各个功能单元所实现的更为详细的处理流程,在上述方法实施例中已做详细描述,此处不再详细描述。
通过本发明实施例提供的上述至少一个技术方案,在建立索引时,首先监测第一存储区域中保存的包含单文档的索引段的数量,当包含单文档的索引段的数量达到第一阈值时,将包含单文档的索引段合并为包含第一阈值文档的索引段;然后进一步监测第一存储区域中包含第一阈值文档的索引段的数量,当包含第一阈值文档的索引段的数量达到第二阈值时,将包含第一阈值文档的索引段合并为包含第一阈值乘以所述第二阈值文档的索引段,并当第一存储区域中所有索引段包含的文档总数达到设定的最大合并阈值时,将第一存储区域中的所有索引段合并为包含最大合并阈值文档的索引段写入第二存储区域,根据该技术方案,在第一存储区域中增加了索引段的合并过程,减少了写入第二存储区域的频率,并且增加了最终索引段中包含的文档数量,在索引文档数目一定时减少了索引段的个数,从而在不影响检索性能的前提下,提高了检索效率。
进一步地,由于现有技术中每索引一篇文档都会将该文档作为一个单独的索引段保存,在保存时为每一个索引段分配固定的内存空间,例如10K,如果索引段的大小超过10K,例如11K,则为该索引段分配2个内存空间,即20K的内存空间,这样,这个索引段占用的内存空间就比其时间大小要大,而一般索引段的大小都很难保证是文档大小的整数倍,因此很多索引段占用的内存空间往往比自身大小大,从而造成很多内存空间的浪费。而根据本发明以上实施例,由于在内存中增加了一级内存合并,从而减少了内存空间的浪费,例如,2个11K的索引段,在合并前要占用4个10K的内存空间,浪费18K的内存空间,在不采用差量存储技术时,合并后最多占用3个10K的内存空间,若采用差量存储技术存储则占用更少的内存空间,因此,根据本发明实施例可以在内存使用基本不变的情况下,增加缓存在内存中的文档数量,降低了向磁盘中写入数据的频率,保证了索引性能,并且由于得到的最终索引段的容量大,索引段的数量少,减少了检索时要打开、读取、处理的索引段,从而提高了检索效率。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (15)

1.一种索引建立方法,其特征在于,包括:
监测第一存储区域中存储的包含单文档的索引段的数量,所述第一存储区域为待索引文档初始写入的临时存储区域;
当所述包含单文档的索引段的数量达到第一阈值时,将所述包含单文档的索引段合并为包含所述第一阈值文档的索引段;
监测所述第一存储区域中存储的包含所述第一阈值文档的索引段的数量;
当所述包含所述第一阈值文档的索引段的数量达到第二阈值时,将所述包含所述第一阈值文档的索引段合并为包含所述第一阈值乘以所述第二阈值文档的索引段,并当所述第一存储区域中所有索引段包含的文档总数达到设定的最大合并阈值时,将所述第一存储区域中的所有索引段合并为包含所述最大合并阈值文档的索引段写入第二存储区域,所述第二存储区域为文档合并为索引段后的存储区域。
2.如权利要求1所述的方法,其特征在于,所述第一阈值以及所述第二阈值根据所述第一存储区域的存储空间确定。
3.如权利要求1所述的方法,其特征在于,将所述索引段写入第二存储区域后,还包括:
在确定所有文档索引完毕并且所述第一存储区域中存储有未写入所述第二存储区域的索引段时,将所述未写入第二存储区域的索引段合并为一个索引段并写入所述第二存储区域。
4.如权利要求1所述的方法,其特征在于,写入第二存储区域后,还包括:
监测所述第二存储区域中存储的包含所述最大合并阈值文档的索引段的数量;
当包含所述最大合并阈值文档的索引段的数量达到第三阈值时,将包含所述最大合并阈值文档的索引段合并为包含所述最大合并阈值乘以第三阈值文档的索引段。
5.如权利要求4所述的方法,其特征在于,所述第三阈值与所述第二阈值取相同值。
6.如权利要求4所述的方法,其特征在于,还包括:
将所述第二存储区域中设定个数的索引段合并为一个索引段,合并得到的索引段中包含的文档数不大于第四阈值。
7.如权利要求6所述的方法,其特征在于,所述第四阈值为所述第一阈值、所述第二阈值、所述第三阈值的设定次方的乘积。
8.如权利要求6所述的方法,其特征在于,还包括:
在确定所有文档索引完毕并且写入第二存储区域后,根据预设的第五阈值对所述第二存储区域中存储的索引段进行优化合并。
9.如权利要求8所述的方法,其特征在于,根据预设的第五阈值对所述第二存储区域中存储的索引段进行优化合并,包括:
将所述第二存储区域中存储的包含的文档数小于所述第五阈值的索引段合并为一个索引段,以及,将所述第二存储区域中存储的包含的文档数大于等于所述第五阈值、小于所述第四阈值的索引段合并为一个索引段。
10.一种索引建立装置,其特征在于,包括:
第一监测单元,用于监测第一存储区域中存储的包含单文档的索引段的数量,所述第一存储区域为待索引文档初始写入的临时存储区域;
第一合并单元,用于当所述第一监测单元监测的包含单文档的索引段的数量达到第一阈值时,将所述包含单文档的索引段合并为包含所述第一阈值文档的索引段;
第二监测单元,用于监测第一存储区域中存储的包含所述第一阈值文档的索引段的数量;
第二合并单元,用于当所述第二监测单元监测的包含所述第一阈值文档的索引段的数量达到第二阈值时,将所述包含所述第一阈值文档的索引段合并为包含所述第一阈值乘以所述第二阈值文档的索引段,并当所述第一存储区域中所有索引段包含的文档总数达到设定的最大合并阈值时,将所述第一存储区域中的所有索引段合并为包含所述最大合并阈值文档的索引段写入第二存储区域,所述第二存储区域为文档合并为索引段后的存储区域。
11.如权利要求10所述的装置,其特征在于,还包括:
第三合并单元,用于在所述第二合并单元将所述索引段写入第二存储区域,并且在确定所有文档索引完毕并且所述第一存储区域中存储有未写入所述第二存储区域的索引段时,将所述未写入第二存储区域的索引段合并为一个索引段并写入所述第二存储区域。
12.如权利要求10所述的装置,其特征在于,写入第二存储区域后,还包括:
第三监测单元,用于监测所述第二存储区域中存储的包含所述最大合并阈值文档的索引段的数量;
第四合并单元,用于当所述第三监测单元监测的包含所述最大合并阈值文档的索引段的数量达到第三阈值时,将包含所述最大合并阈值文档的索引段合并为包含所述最大合并阈值乘以第三阈值文档的索引段。
13.如权利要求12所述的装置,其特征在于,所述第四合并单元还用于:
将所述第二存储区域中存储的设定个数的索引段合并为一个索引段,合并得到的索引段中包含的文档数不大于第四阈值。
14.如权利要求13所述的装置,其特征在于,还包括:
优化合并单元,用于在确定所有文档索引完毕并且写入所述第二存储区域后,根据预设的第五阈值对所述第二存储区域中存储的索引段进行优化合并。
15.如权利要求14所述的装置,其特征在于,所述优化合并单元具体用于:
将所述第二存储区域中存储的包含的文档数小于所述第五阈值的索引段合并为一个索引段,以及,将所述第二存储区域中存储的包含的文档数大于等于所述第五阈值、小于所述第四阈值的索引段合并为一个索引段。
CN 200910241774 2009-12-07 2009-12-07 一种索引建立方法及装置 Expired - Fee Related CN102087646B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910241774 CN102087646B (zh) 2009-12-07 2009-12-07 一种索引建立方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910241774 CN102087646B (zh) 2009-12-07 2009-12-07 一种索引建立方法及装置

Publications (2)

Publication Number Publication Date
CN102087646A CN102087646A (zh) 2011-06-08
CN102087646B true CN102087646B (zh) 2013-03-20

Family

ID=44099459

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910241774 Expired - Fee Related CN102087646B (zh) 2009-12-07 2009-12-07 一种索引建立方法及装置

Country Status (1)

Country Link
CN (1) CN102087646B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577454B (zh) * 2012-08-01 2019-03-01 华为技术有限公司 一种文件合并方法和装置
CN104424267A (zh) * 2013-08-29 2015-03-18 北大方正集团有限公司 一种索引数据插入方法及系统
CN104462080B (zh) * 2013-09-12 2018-05-01 北大方正集团有限公司 针对检索结果进行分组统计的索引结构创建方法和系统
CN104820693B (zh) * 2015-04-28 2018-07-24 广东小天才科技有限公司 一种数据搜索的方法及装置
CN104820692B (zh) * 2015-04-28 2018-06-08 广东小天才科技有限公司 一种建立索引的方法及装置
CN105787090A (zh) * 2016-03-15 2016-07-20 国网信息通信产业集团有限公司 一种电力数据的olap系统的索引建立方法和系统
CN109726264B (zh) * 2019-01-16 2022-02-25 北京百度网讯科技有限公司 用于索引信息更新的方法、装置、设备和介质
CN113761295B (zh) * 2021-09-22 2024-02-27 杭州安恒信息技术股份有限公司 一种索引段合并方法及设备
CN113961153B (zh) * 2021-12-21 2022-11-04 杭州趣链科技有限公司 一种索引数据写入磁盘的方法、装置及终端设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1536509A (zh) * 2003-04-11 2004-10-13 �Ҵ���˾ 倒排索引存储方法、倒排索引机制以及在线更新的方法
CN1979469A (zh) * 2005-11-29 2007-06-13 国际商业机器公司 索引及其扩展和查询方法
CN101189602A (zh) * 2003-11-10 2008-05-28 奥弗图尔服务公司 具有分层存储的索引的搜索引擎
CN101271474A (zh) * 2007-03-20 2008-09-24 株式会社东芝 利用索引来搜索结构化文档的系统和方法
CN101344881A (zh) * 2007-07-09 2009-01-14 中国科学院大气物理研究所 海量文件型数据的索引生成方法及装置和搜索系统
CN102096679A (zh) * 2009-12-15 2011-06-15 北大方正集团有限公司 一种索引段合并和写入磁盘的方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1536509A (zh) * 2003-04-11 2004-10-13 �Ҵ���˾ 倒排索引存储方法、倒排索引机制以及在线更新的方法
CN101189602A (zh) * 2003-11-10 2008-05-28 奥弗图尔服务公司 具有分层存储的索引的搜索引擎
CN1979469A (zh) * 2005-11-29 2007-06-13 国际商业机器公司 索引及其扩展和查询方法
CN101271474A (zh) * 2007-03-20 2008-09-24 株式会社东芝 利用索引来搜索结构化文档的系统和方法
CN101344881A (zh) * 2007-07-09 2009-01-14 中国科学院大气物理研究所 海量文件型数据的索引生成方法及装置和搜索系统
CN102096679A (zh) * 2009-12-15 2011-06-15 北大方正集团有限公司 一种索引段合并和写入磁盘的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
葛付江.面向动态文档集的大规模文本索引构建技术的研究.《中国优秀硕士学位论文全文数据库》.2008, *

Also Published As

Publication number Publication date
CN102087646A (zh) 2011-06-08

Similar Documents

Publication Publication Date Title
CN102087646B (zh) 一种索引建立方法及装置
US20200249848A1 (en) Memory allocation buffer for reduction of heap fragmentation
EP2439645B1 (en) Method and apparatus for storing data in a multi-level cell flash memory device
US8572309B2 (en) Apparatus and method to protect metadata against unexpected power down
US9563375B2 (en) Method for storing metadata of log-structured file system for flash memory
US8682941B2 (en) Database apparatus
US20120191936A1 (en) Just in time garbage collection
US20070088920A1 (en) Managing data for memory, a data store, and a storage device
CN107247624B (zh) 一种面向Key-Value系统的协同优化方法及系统
KR20140050941A (ko) 비휘발성 메모리 장치의 데이터 관리 방법
CN102375850B (zh) 电子设备的文件排布方法、启动方法及电子设备
JP2006512643A (ja) 二重ジャーナリングの保存方法及びその記憶媒体
US8433871B2 (en) Data copy management for faster reads
CN103257888A (zh) 一种对缓冲队列并发执行读、写访问的方法和设备
Ji et al. Inspection and characterization of app file usage in mobile devices
KR102043932B1 (ko) 솔리드 스테이트 드라이브 캐싱 환경에서 디스크 조각 모음 관리 방법
JPWO2017006675A1 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
KR20100054402A (ko) 스토리지를 갖는 컴퓨팅 장치와, 상기 스토리지에 대한 관리 장치 및 방법과, 파일 시스템이 기록된 기록 매체
KR101465460B1 (ko) 트림 방법 및 데이터 관리 장치
CN104834478A (zh) 一种基于异构混合存储设备的数据写入及读取方法
CN102681792A (zh) 一种固态盘内存分区方法
CN102169464B (zh) 一种用于非易失性存储器的缓存方法、装置及智能卡
CN103823634A (zh) 一种支持无随机写模式的数据处理方法及系统
US20190065395A1 (en) Storage device and data arrangement method
CN102467557B (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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220624

Address after: 3007, Hengqin international financial center building, No. 58, Huajin street, Hengqin new area, Zhuhai, Guangdong 519031

Patentee after: New founder holdings development Co.,Ltd.

Patentee after: FOUNDER APABI TECHNOLOGY Ltd.

Patentee after: Peking University

Address before: 100871, Beijing, Haidian District Cheng Fu Road 298, founder building, 9 floor

Patentee before: PEKING UNIVERSITY FOUNDER GROUP Co.,Ltd.

Patentee before: FOUNDER APABI TECHNOLOGY Ltd.

Patentee before: Peking University

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

Granted publication date: 20130320