一种索引建立方法及装置的制作方法

文档序号:6585024阅读:138来源:国知局
专利名称:一种索引建立方法及装置的制作方法
技术领域
本发明涉及信息检索领域,尤其涉及一种索引建立方法及装置。
背景技术
检索引擎的核心技术是索引,索引是包括若干文档的序列。基于信息内容的快速 更新,索引中包括的文档序列也需要不断更新。目前,索引更新的问题主要在于为了更新少 数文档,需要重写全部索引,而实际上索引中绝大多数文档与此次更新无关。因此,为了减 少不必要的更新,在建立索引时普遍采用分段机制,即预先设置索引中包括的文档个数,将 索引分成多个子索引,每个子索引称为索引段(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)的个数由大到小排列,即segment 1 中包含的 doc 数〉segment2 中包含的 doc 数〉......> segmentN 中
包含的doc数。通过图2所示的管理队列对索引过程进行监控,以控制文档的合并与写入磁盘。在启动索引过程后,对索引文档的合并以及写入磁盘的控制过程,具体如图3所示,包括如 下步骤步骤301、索引一篇文档,在内存中为该文档创建一个segment,并加入管理队列尾部。该步骤中,管理队列尾部的segment由于是由新加入的文档形成的segment,因 此,管理队列尾部的segment中包含的文档数为1。步骤302、判断未合并索引文档的数量是否达到FirstLevelMergeFactor (第一阈 值),若是,则执行步骤303 步骤311,否则返回步骤301。该步骤中,当前未合并索引文档的数据也即新加入管理队列中的只包含一个文档 的segment的数量。步骤303、将该FirstLevelMergei^ctor个的索引文档合并为一个索引段。如图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 ;本实施例中,取第二阈值=第三阈值=MergeFactor0其中等号前面为更新后的TargetMergeDocs,作为返回步骤305后当前 TargetMergeDocs ο步骤312、判断是否索引完毕,若否,则返回步骤301,若是,则执行步骤313。
步骤313、判断内存中是否还有未写入磁盘的文档,若是,则执行步骤314,否则结
束ο步骤314、将内存中未写入磁盘的文档合并为一个索引段并写入磁盘。根据本发明以上实施例,由于在内存中增加了一级内存合并,降低了写入磁盘的 频率,使得最终索引段中可容纳的文档数量提高,减少了索引段的数量,在检索时,加速了 检索的效率。本发明实施例中,内存中索引段可以采取普通的存储方式,即为每一个索引段分 配固定的内存空间,当索引段的大小大于一个内存空间时,则再为该索引段分配整数个内 存空间,但该种方式容易造成内存空间的浪费,当一个索引段的大小不是内存空间大小的 整数倍时,则剩余的不足一个内存空间大小的部分也要被分配一个内存空间。为了避免内 存空间的浪费,本发明实施例中在内存中索引段可以采取现有的差量存储技术进行存储。本发明又一实施例中,还引入了优化合并因子——OptimizeMergeDocs,用于在合 并结束后对磁盘中的最终索引段进行优化合并,如图5所示,优化合并过程如下步骤501、扫描每个segment中包含的文档数量;步骤502、将小于OptimizeMergeDocs的索引段合并为一个索引段,将大于等于 OptimizeMergeDocs /hT MaxMergeDocs 白勺弓| 。根据上述优化过程,可以进一步减少最终索引段的数量,使得合并后的结果为若 干个包含MaxMer geDo c s个文档的最大索引段,一个包含的文档数量在MaxMer geDo c s与 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和kgmentsMergeFactor,根据经验值,一种较优 的情况下,可以设置各参数如下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个IlK的索引段,在合并前要占用4个IOK的内存空间,浪费18K的内存空间,在不采用差量存储技术时,合并后最多占用3个IOK的内存空间,若采用差量存储技术存储则占用 更少的内存空间,因此,根据本发明实施例可以在内存使用基本不变的情况下,增加缓存在 内存中的文档数量,降低了向磁盘中写入数据的频率,保证了索引性能,并且由于得到的最 终索引段的容量大,索引段的数量少,减少了检索时要打开、读取、处理的索引段,从而提高 了检索效率。 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
权利要求
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所述的装置,其特征在于,所述优化合并单元具体用于将所述第二存储区域中存储的包含的文档数小于所述第五阈值的索引段合并为一个 索引段,以及,将所述第二存储区域中存储的包含的文档数大于等于所述第五阈值、小于所 述第四阈值的索引段合并为一个索引段。
全文摘要
本发明公开了一种索引建立方法及装置,主要技术方案包括监测第一存储区域中存储的包含单文档的索引段的数量;当包含单文档的索引段的数量达到第一阈值时,将包含单文档的索引段合并为包含所述第一阈值文档的索引段;监测第一存储区域中包含第一阈值文档的索引段的数量;当包含第一阈值个文档的索引段的数量达到第二阈值时,将包含第一阈值文档的索引段合并为包含第一阈值乘以第二阈值文档的索引段,并当第一存储区域中所有索引段包含的文档总数达到设定的最大合并阈值时,将第一存储区域中的所有索引段合并为包含最大合并阈值文档的索引段写入第二存储区域,采用该技术方案,减少了写入磁盘的次数,保证了索引更新效率,并且提高了检索效率。
文档编号G06F17/30GK102087646SQ20091024177
公开日2011年6月8日 申请日期2009年12月7日 优先权日2009年12月7日
发明者徐剑波, 李晓蕊, 童征宇, 赵东岩 申请人:北京大学, 北京方正阿帕比技术有限公司, 北大方正集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1