本发明专利技术公开了一种索引段合并和写入磁盘的方法及装置,其中方法包括:根据各索引段中相同类型的各第一索引文件的文件大小,确定第二索引文件所需的总存储空间大小;在磁盘中创建合并后新的索引段中的各第二索引文件,并为创建的各第二索引文件预留出等于总存储空间大小的存储空间;将待合并的各索引段中所有相同类型的第一索引文件合并并写入到对应的第二索引文件中。由于预先确定出各索引段中相同类型的第一索引文件合并后所需的总存储空间大小,在合并及写入的过程中,能够将合并后的第二索引文件的数据比较完整地写入预留的存储空间中,有效地避免了索引段合并并写入磁盘的过程中产生文件碎片的问题。
【技术实现步骤摘要】
本专利技术涉及信息检索领域,尤其涉及一种索引段合并和写入磁盘的方法及装置。
技术介绍
检索引擎的索引过程是在内存中进行的,现有的索引技术的做法是将每一个经过 搜索引擎处理过的文档独立生成一个索引段,当内存中的索引段达到一定的数量时,需要 将这些索引段合并成新的索引段并写入磁盘中保存。每个索引段是由多个索引文件组成的,因此,索引段的合并实际上是索引段中各 索引文件的合并。在各索引段合并成新的索引段并写入磁盘的过程中,需要同时打开需要 合并的各索引段中的每个索引文件,将各索引段中的相同文件类型的索引文件合并并逐步 写入磁盘中。各索引段所包含的多种类型的索引文件都同时进行合并和写入的过程,以图1中 段1和段2的合并过程为例,假设段1和段2中分别包含*. tis类型的索引文件以及*. fdt 类型的索引文件,段1中的*. tis文件与段2中的*. tis合并成new. tis文件,段1中的fdt文件与段2中的fdt合并成new. fdt文件,在将合并后的new. tis文件和new. fdt 文件写入磁盘的过程中,操作系统会分别为new. tis文件和new. fdt文件分配一定的存储 空间,如图1中所示的合并后的新索引段中的101和102,由于每个合并后的索引文件是 同时且逐步写入磁盘的,如果合并后的new. tis文件没有写完而系统分配的存储空间101 已满,那么,只能在为new. fdt文件分配的存储空间102之后的存储空间103内,继续写入 new. tis文件的剩余部分;如果合并后的new. fdt文件没有写完而分配的存储空间102已 满,那么只能在存储空间103之后的存储空间104内,继续写入new. fdt文件的剩余部分, 直到将new. tis文件和new. fdt文件完全写入磁盘中。因为操作系统分配的空间大小是一 定的,并且一般会远小于合并后的索引文件的大小,因此,上述合并并写入的过程会在磁盘 中产生大量的文件碎片。实际测试表明,对一个大小为IG的合并后的索引文件,其文件碎片数量可以达到 上万个。索引文件碎片过多不仅会导致系统在读文件时不停地来回寻道,从而引起检索性 能下降,严重时还会导致读索引文件失败检索出错。传统的索引文件管理方式需要不定时地整理磁盘碎片。碎片整理就是将非连续存 放的文件重新写到硬盘连续扇区的过程,其效果可以提高数据存取效率,但是整理磁盘碎 片是一件费时费力的工作,对硬盘的使用寿命也有损害。
技术实现思路
本专利技术实施例提供了一种索引段合并和写入磁盘的方法及装置,用以解决现有索 引段合并及写入磁盘的过程在磁盘中产生大量的索引文件碎片的问题。本专利技术实施例提供的一种索引段合并和写入磁盘的方法,包括根据各索引段中相同类型的各第一索引文件的文件大小,确定第二索引文件所需的总存储空间大小;在磁盘中创建新的索引段中的各第二索引文件,并分别为各第二索引文件预留等 于所述总存储空间大小的存储空间;将待合并的各索引段中相同类型的各第一索引文件合并并写入到对应的第二索 引文件中。根据各索引段中相同类型的各第一索引文件的文件大小,确定第二索引文件所需 的总存储空间大小,包括打开所述各索引段中相同类型的各第一索引文件,获取打开的各第一索引文件的 文件大小;计算所述各索引段中相同类型的各第一索引文件的文件大小的总和;确定各索引段中相同类型的各第一索引文件合并后生成的第二索引文件所需的 总存储空间的大小等于计算出的所述总和。为第二索引文件预留出等于总存储空间大小的存储空间,包括将创建的第二索引文件的起始位置加上所述总和,作为为所述第二索引文件预留 出的存储空间的结束位置;移动所述第二索引文件的文件指针至所述结束位置,在所述结束位置设置第二索 引文件的文件结束符。将各索引段中相同类型的各第一索引文件合并并写入到对应的第二索引文件中, 包括移动所述第二索引文件的文件指针至所述第二索引文件的起始位置;从所述起始位置开始,将各索引段中相同类型的各第一索引文件合并后的数据逐 步写入到所述预留出的存储空间中,不断移动所述第二索引文件的文件指针至写入的数据 的末尾;当所述第一索引文件合并及写入完毕之后,在第二索引文件的文件指针所在的位 置重新设置第二索引文件的文件结束符。本专利技术实施例还提供了一种索引段合并和写入磁盘的装置,包括确定单元,用于根据各索引段中相同类型的各第一索引文件的文件大小,确定第 二索引文件所需的总存储空间大小;创建单元,用于在磁盘中创建新的索引段中的各第二索引文件,并分别为各第二 索引文件预留出等于所述总存储空间大小的存储空间;合并写入单元,将待合并的各索引段中相同类型的各第一索引文件合并并写入到 对应的第二索引文件中。进一步地,所述确定单元,包括获取子单元,用于打开所述各索引段中相同类型的各第一索引文件,获取打开的 各第一索引文件的文件大小;计算子单元,计算所述各索引段中相同类型的各第一索引文件的文件大小的总 和;确定子单元,确定各索引段中相同类型的各第一索引文件合并后生成的第二索引 文件所需的总存储空间的大小等于计算出的所述总和。进一步地,所述创建单元,还用于将创建的第二索引文件的起始位置加上所述总 和,作为为所述第二索引文件预留出的存储空间的结束位置;移动所述第二索引文件的文件指针至确定出的结束位置,在所述结束位置设置第 二索引文件的文件结束符。所述合并写入单元,还用于移动所述第二索引文件的文件指针至所述第二索引文 件的起始位置;从所述起始位置开始,将各索引段中相同类型的各第一索引文件合并后的 数据逐步写入到所述预留出的存储空间中,不断移动所述第二索引文件的文件指针至写入 的数据的末尾;当所述第一索引文件合并及写入完毕之后,在第二索引文件的文件指针所 在的位置重新设置第二索引文件的文件结束符。本专利技术实施例的有益效果包括本专利技术实施例提供的一种索引段合并和写入磁盘的方法及装置,根据各索引段中 相同类型的各第一索引文件的文件大小,确定第二索引文件所需的总存储空间大小;在磁 盘中创建合并后新的索引段中的各第二索引文件,并为创建的各第二索引文件预留出等于 总存储空间大小的存储空间;将待合并的各索引段中所有相同类型的第一索引文件合并并 写入到对应的第二索引文件中。由于预先确定出各索引段中相同类型的第一索引文件合并 后所需的总存储空间大小,在合并及写入的过程中,能够将合并后的第二索引文件的数据 比较完整地写入预留的存储空间中,有效地避免了索引段合并并写入磁盘的过程中产生文 件碎片的问题。附图说明图1为现有技术中索引段的合并示意图;图2为本专利技术实施例提供的索引段合并和写入磁盘的方法的流程图;图3为本专利技术实施例提供的确定待合并的各索引段中所有相同类型第一索引文 件合并后所需的总存储空间的流程图;图4为本专利技术实施例提供的“new. tis”索引文件的预留存储空间的示意图;图5为本专利技术实施例提供的合并并写入过程完毕后“new. tis”索引文件的存储空 间的示意图;图6为本专利技术实施例提供的索引段合并和写入磁盘的装置的结构示意图;图7为本专利技术实施例提供的索引段合并和写入磁盘的装置中确定单元的结构示 意图。具体实施例方式下面结合附图,用具体实施例对本专利技术提供的一种索引段合并和写入磁盘方法及 装置进行详细的说本文档来自技高网...
【技术保护点】
一种索引段合并和写入磁盘的方法,其特征在于,包括:根据各索引段中相同类型的各第一索引文件的文件大小,确定第二索引文件所需的总存储空间大小;在磁盘中创建新的索引段中的各第二索引文件,并分别为各第二索引文件预留等于所述总存储空间大小的存储空间;将待合并的各索引段中相同类型的各第一索引文件合并并写入到对应的第二索引文件中。
【技术特征摘要】
【专利技术属性】
技术研发人员:徐剑波,李晓蕊,
申请(专利权)人:北大方正集团有限公司,北京方正阿帕比技术有限公司,
类型:发明
国别省市:11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。