一种索引文件合并方法及装置的制作方法

文档序号:6401169阅读:129来源:国知局
专利名称:一种索引文件合并方法及装置的制作方法
技术领域
本发明涉及索引创建技术领域中的索引文件合并技术领域,尤其涉及一种索引文件合并方法及装置。
背景技术
全文检索(Full text search)是一种将文件中所有文本与检索项匹配的文字资料检索方法。全文检索的核心是解析文本数据建立倒排索引,基于检索条件查询索引库中的索引数据,得到与检索条件匹配的索引数据,从而快速获取检索结果的技术。如何保证索引查询的实时性和高效率是全文检索的重点。现有技术中基于索引库中的索引数据进行检索查询的过程如下:检索服务器接收用户终端发送的检索请求,从检索请求中获取检索条件,然后在索引库中的索引数据中进行索引查询,查询到与该检索条件匹配的索引数据,将与该检索条件匹配的索引数据作为检索结果,或者,再基于得到的与该检索条件匹配的索引数据,从数据库中查询到与该索引数据匹配的检索结果。其中,索引数据在索引库中是以索引文件的形式存储的。在实际应用中,由于索引建立的时间和所基于的文本数据不同,可能会生成多个索引文件用于检索处理时的索引查询,且所生成的多个索引文件中可能存在相同的索引项。当在基于这多个索引文件进行索引查询时,需要分别查询每个索引文件中的索引数据,从而导致对于不同索引文件中的相同索引项要查询多次,进而降低了索引查询的效率。为了解决上述问题,通常需要将多个索引文件进行合并,得到一个合并后索引文件,以便基于合并后索引文件进行索引查询时提高查询效率。目前,在对索引文件进行合并的过程中,需要将待合并的多个索引文件缓存到内存中,然后通过对内存中缓存的多个索引文件进行合并处理,且在合并处理的过程中,是通过索引文件的两两合并实现多个索引文件的合并,而无法实现一次对多个索引文件的合并处理。因此,现有技术中在对索引文件合并时,存在内存资源消耗较大,且合并处理的效率较低的问题。

发明内容
本发明实施例提供一种索引文件合并方法及装置,用以解决现有技术中存在的在对索引文件合并时内存资源消耗较大,且合并处理的效率较低的问题。本发明实施例提供一种索引文件合并方法,循环执行如下步骤,直到对待合并的多个索引文件进行合并处理完成:依次针对所述多个索引文件中的每个索引文件,当该索引文件中存在未获取过的索引结构体,且内存中未缓存有该索引文件中的索引结构体时,从该索引文件的未获取过的索引结构体中按照索引项的指定顺序获取预设数量的索引结构体,得到若干个索引结构体;将得到的所述若干个索引结构体缓存到内存中;针对内存中当前缓存的所有索引结构体,进行索引结构体的合并处理,得到合并后的索引结构体;将所述合并后的索引结构体保存到合并后索引文件中。本发明实施例还提供一种索引文件合并装置,包括:获取单元,用于依次针对所述多个索引文件中的每个索引文件,当该索引文件中存在未获取过的索引结构体,且内存中未缓存有该索引文件中的索引结构体时,从该索引文件的未获取过的索引结构体中按照索引项的指定顺序获取预设数量的索引结构体,得到若干个索引结构体;缓存单元,用于将得到的所述若干个索引结构体缓存到内存中;合并单元,用于针对内存中当前缓存的所有索引结构体,进行索引结构体的合并处理,得到合并后的索引结构体;保存单元,用于将所述合并后的索引结构体保存到合并后索引文件中。本发明有益效果包括:本发明实施例提供的方法中,在对索引文件进行合并时,循环执行且直到对待合并的多个索引文件进行合并处理完成为止的步骤包括:依次针对待合并的该多个索引文件中的每个索引文件,当该索引文件中存在未获取的索引结构体,且内存中未缓存有该索引文件中的索引结构体时,从该索引文件的未获取过的索引结构体中按照索引项的指定顺序获取预设数量的索引结构体,得到若干个索引结构体,将得到的该若干个索引结构体缓存到内存中,并针对内存中当前缓存的所有索引结构体,进行索引结构体的合并处理,得到合并后的索引结构体,并保留未合并的索引结构体,以及将合并后的索引结构体保存到合并后索引文件中。在该方案中,内存中缓存的索引结构体的数量,最多为该多个索引文件的数量与该预设数量的乘积,相比现有技术中将该多个索引文件均缓存到内存中,减少了内存资源的消耗,且采用该方案,可以一次实现针对该多个索引文件的合并,提高了索引文件合并处理的效率。本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。


附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:图1为本发明实施例提供的索引文件合并方法的流程图;图2为本发明实施例1提供的索引文件合并方法的流程图;图3为本发明实施例2提供的索引文件合并装置的结构示意图。
具体实施例方式为了给出在对索引文件合并时降低内存资源消耗,且提高合并处理的效率的实现方案,本发明实施例提供了一种索引文件合并方法及装置,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相
互组合。本发明实施例提供一种索引文件合并方法,如图1所示,循环执行如下步骤,直到待合并的多个索引文件进行合并处理完成:步骤101、依次针对该多个索引文件中的每个索引文件,当该索引文件中存在未获取过的索引结构体,且内存中未缓存有该索引文件中的索引结构体时,从该索引文件的未获取过的索引结构体中按照索引项的指定顺序获取预设数量的索引结构体,得到若干个索引结构体。其中,该预设数量可以是1,即本步骤中具体可以为从该索引文件的未获取过的索引结构体中按照索引项的指定顺序获取一个索引结构体,从而使得内存中同时缓存的索引结构体的数量最多为该多个索引文件的数量。步骤102、将得到的该若干个索引结构体缓存到内存中。步骤103、针对内存中当前缓存的所有索引结构体,进行索引结构体的合并处理,得到合并后的索引结构体。本步骤中,进行索引结构体的合并处理,可以为当内存中当前缓存的所有索引结构体中存在满足合并条件的索引结构体时,将内存中当前缓存的所有索引结构体中满足合并条件的索引结构体进行合并处理,得到合并后的索引结构体;当内存中当前缓存的所有索引结构体中不存在满足合并条件的索引结构体时,可以将内存中当前缓存的所有索引结构体中,按照索引项的指定顺序的第一个索引结构体确定为合并后的索引结构体。其中,当内存中当前缓存的所有索引结构体中存在满足合并条件的索引结构体时,具体可以为将内存中当前缓存的所有结构体中索引项相同的索引结构体进行合并处理。步骤104、将合并后的索引结构体保存到合并后索引文件中。进一步的,在将合并后的索引结构体保存到合并后索引文件中之后,还可以删除内存中缓存的该合并后的索引结构体,以便减少对内存的占用。下面结合附图,用具体实施例对本发明提供的方法及装置进行详细描述。实施例1:图2所示为本发明实施例提供的索引文件合并方法的流程图,具体包括如下处理步骤:步骤201、依次针对待合并的多个索引文件中的每个索引文件,当该索引文件中存在未获取过的索引结构体,且内存中未缓存有该索引文件中的索引结构体时,从该索引文件的未获取过的索引结构体中按照索引项的指定顺序获取预设数量的索引结构体,得到若干个索引结构体。索引文件是由多个索引结构体组成,每个索引结构体包括索引项和与该索引项对应的索引结果数据。本步骤中,索引文件中的索引结构体可以是按照索引项的指定顺序排列的,从而在从索引文件中获取索引结构体时,可以更方便的按照索引项的指定顺序进行获取,具体可以从一个索引文件中获取一个索引结构体,以便后续在进行索引合并处理时,最少的占用内存资源。该指定顺序可以是索引项表征的数值从小到大的升序,也可以是索引项表征的数值从大到小的降序。当第一次执行本步骤时,由于该多个索引文件中的每个索引文件中均存在未获取过的索引结构体,且内存中也未缓存有索引结构体,所以,是分别从该多个索引文件的未获取过的索引结构体中按照索引项的指定顺序获取预设数量的索引结构体。当非第一次执行本步骤时,可以是针对上一次进行索引合并时已合并的索引结构体所属的索引文件,当该索引文件中存在未获取过的索引结构体时,从该索引文件的未获取过的索引结构体中按照索引项的指定顺序获取预设数量的索引结构体,而针对上一次进行索引合并时未合并的索引结构体所属的索引文件,本步骤中不再需要从该索引文件中获取索引结构体。并且,当一个索引文件中不存在未获取过的索引结构体时,即该索引文件中的所有索引结构体均被获取过用于索引合并时,表示针对该索引文件的合并已经结束,本步骤中也不再需要从该索引文件中获取索引结构体。步骤202、将得到的该若干个索引结构体缓存到内存中。本发明实施例中,内存中缓存的索引结构体可以采用完全二叉树方式在内存中进行缓存,即缓存的每个索引结构体在内存中可以对应完全二叉树的一个节点,例如,可以基于内存中需要缓存的索引结构体的最大数量,设置完全二叉树的节点的数量为该最大数量,且进一步的,还可以设置每个节点对应的索引文件,该节点用于缓存从该节点对应的该索引文件中获取的索引结构体。由于内存中缓存的索引结构体是采用完全二叉树方式在内存中进行缓存,所以后续基于缓存的索引结构体进行索引合并时,能够提高处理效率。步骤203、确定内存中当前缓存的所有索引结构体中是否存在满足合并条件的索引结构体,如果存在,进入步骤204,如果不存在,进入步骤205。本发明实施例中,满足合并条件的索引结构体可以具有相同索引项的索引结构体。步骤204、将内存中当前缓存的所有索引结构体中满足合并条件的索引结构体进行合并处理,得到合并后的索引结构体。在执行本步骤之后,对于已经进行合并处理的已合并的索引结构体,在内存中已经不再存在,即相当于已删除了进行合并处理的已合并的索引结构体,而对于未合并的索引结构体,可以在内存中保留,继续缓存,用于后续合并。本步骤中,对索引结构体的具体合并处理方式,可以采用现有技术中的各种方式,在此不再进行详细描述。步骤205、将内存中当前缓存的所有索引结构体中,按照索引项的指定顺序的第一个索引结构体确定为合并后的索引结构体。由于在从该多个索引文件的未获取过的索引结构体中获取索引结构体时,是按照索引项的指定顺序获取的,所以当内存中当前缓存的所有索引结构体中不存在满足合并条件的索引结构体时,表示对于内存中当前缓存的所有索引结构体中,按照索引项的指定顺序的第一个索引结构体,该多个索引文件中当前未获取过的所有索引结构体中,也不存在能够与该第一个索引结构体进行合并的索引结构体,所以,本步骤中将该第一个索引结构体确定为合并后的索引结构体。步骤206、将该合并后的索引结构体保存到合并后索引文件中。本步骤中,具体可以为将合并后的索引结构体按照索引项的指定顺序,保存到合并后索引文件中,即使得合并后索引文件中的索引结构体也是按照索引项的指定顺序存储的。步骤207、删除内存中缓存的该合并后的索引结构体。在得到该合并后的索引结构体之后,该合并后的索引结构体是缓存在内存中的,为了减少对内存资源的占用,在将该合并后的索引结构体保存到合并后索引文件中之后,即可以删除内存中缓存的该合并后的索引结构体。本步骤为可选步骤。步骤208、确定内存中当前是否缓存有从该多个索引文件中获取的索引结构体,如果缓存有,返回步骤201,如果未缓存有,表示对该多个索引文件进行合并处理完成,合并处理流程结束。本发明实施例中,对于上述步骤208,还可以采用如下方式执行:确定上述步骤201中是否获取到索引结构体,如果获取到,返回步骤201,如果未获取到,将内存中当前缓存的所有索引结构体均作为合并后的索引结构体,保存到合并后索引文件中。采用本发明实施例提供的上述索引文件合并方法,内存中缓存的索引结构体的数量,最多为该多个索引文件的数量与该预设数量的乘积,相比现有技术中将该多个索引文件均缓存到内存中,减少了内存资源的消耗,且采用该方案,可以一次实现针对该多个索引文件的合并,提高了索引文件合并处理的效率。实施例2:基于同一发明构思,根据本发明上述实施例提供的索引文件合并方法,相应地,本发明实施例2还提供了一种索引文件合并装置,其结构示意图如图3所示,具体包括:获取单元301,用于依次针对所述多个索引文件中的每个索引文件,当该索引文件中存在未获取过的索引结构体,且内存中未缓存有该索引文件中的索引结构体时,从该索引文件的未获取过的索引结构体中按照索引项的指定顺序获取预设数量的索引结构体,得到若干个索引结构体;缓存单元302,用于将得到的所述若干个索引结构体缓存到内存中;合并单元303,用于针对内存中当前缓存的所有索引结构体,进行索引结构体的合并处理,得到合并后的索引结构体;保存单元304,用于将所述合并后的索引结构体保存到合并后索引文件中。进一步的,获取单元301,具体用于从该索引文件的未获取过的索引结构体中按照索引项的指定顺序获取一个索引结构体。进一步的,保存单元304,还用于在将所述合并后的索引结构体保存到合并后索引文件中之后,删除内存中缓存的所述合并后的索引结构体。进一步的,合并单元303,具体用于当内存中当前缓存的所有索引结构体中存在满足合并条件的索引结构体时,将内存中当前缓存的所有索引结构体中满足合并条件的索引结构体进行合并处理,得到合并后的索引结构体;当内存中当前缓存的所有索引结构体中不存在满足合并条件的索引结构体时,将内存中当前缓存的所有索引结构体中,按照索引项的指定顺序的第一个索引结构体确定为合并后的索引结构体。进一步的,合并单元303,具体用于当内存中当前缓存的所有索引结构体中存在满足合并条件的索引结构体时,将内存中当前缓存的所有结构体中索引项相同的索引结构体进行合并处理。上述各单元的功能可对应于图1-图2所示流程中的相应处理步骤,在此不再赘述。综上所述,本发明实施例提供的方案,循环执行如下步骤,直到对待合并的多个索引文件进行合并处理完成:依次针对该多个索引文件中的每个索引文件,当该索引文件中存在未获取过的索引结构体,且内存中未缓存有该索引文件中的索引结构体时,从该索引文件的未获取过的索引结构体中按照索引项的指定顺序获取预设数量的索引结构体,得到若干个索引结构体;并将得到的该若干个索引结构体缓存到内存中;并针对内存中当前缓存的所有索引结构体,进行索引结构体的合并处理,得到合并后的索引结构体;以及将合并后的索引结构体保存到合并后索引文件中。采用本发明实施例提供的方案,降低了内存资源消耗,且提高了合并处理的效率。本申请的实施例所提供的索引文件合并装置可通过计算机程序实现。本领域技术人员应该能够理解,上述的模块划分方式仅是众多模块划分方式中的一种,如果划分为其他模块或不划分模块,只要索引文件合并装置具有上述功能,都应该在本申请的保护范围之内。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种索引文件合并方法,其特征在于,循环执行如下步骤,直到对待合并的多个索引文件进行合并处理完成: 依次针对所述多个索引文件中的每个索引文件,当该索引文件中存在未获取过的索引结构体,且内存中未缓存有该索引文件中的索引结构体时,从该索引文件的未获取过的索引结构体中按照索引项的指定顺序获取预设数量的索引结构体,得到若干个索引结构体; 将得到的所述若干个索引结构体缓存到内存中; 针对内存中当前缓存的所有索引结构体,进行索引结构体的合并处理,得到合并后的索引结构体; 将所述合并后的索引结构体保存到合并后索引文件中。
2.如权利要求1所述的方法,其特征在于,从该索引文件的未获取过的索引结构体中按照索引项的指定顺序获取预设数量的索引结构体,具体包括: 从该索引文件的未获取过的索引结构体中按照索引项的指定顺序获取一个索引结构体。
3.如权利要求1所述的方法,其特征在于,在将所述合并后的索引结构体保存到合并后索引文件中之后,还包括: 删除内存中缓存的所述合并后的索引结构体。
4.如权利要求1所述的方法,其特征在于,针对内存中当前缓存的所有索引结构体,进行索引结构体的合并处理,得到合并后的索引结构体,具体包括: 当内存中当前缓存的所有 索引结构体中存在满足合并条件的索引结构体时,将内存中当前缓存的所有索引结构体中满足合并条件的索引结构体进行合并处理,得到合并后的索引结构体; 当内存中当前缓存的所有索引结构体中不存在满足合并条件的索引结构体时,将内存中当前缓存的所有索引结构体中,按照索引项的指定顺序的第一个索引结构体确定为合并后的索引结构体。
5.如权利要求4所述的方法,其特征在于,将内存中当前缓存的所有索引结构体中满足合并条件的索引结构体进行合并处理,具体为: 将内存中当前缓存的所有结构体中索引项相同的索引结构体进行合并处理。
6.如权利要求1-5任一所述的方法,其特征在于,内存中缓存的索引结构体采用完全二叉树方式在内存中进行缓存。
7.一种索引文件合并装置,其特征在于,包括: 获取单元,用于依次针对所述多个索引文件中的每个索引文件,当该索引文件中存在未获取过的索引结构体,且内存中未缓存有该索引文件中的索引结构体时,从该索引文件的未获取过的索引结构体中按照索引项的指定顺序获取预设数量的索引结构体,得到若干个索引结构体; 缓存单元,用于将得到的所述若干个索引结构体缓存到内存中; 合并单元,用于针对内存中当前缓存的所有索引结构体,进行索引结构体的合并处理,得到合并后的索引结构体; 保存单元,用于将所述合并后的索引结构体保存到合并后索引文件中。
8.如权利要求7所述的装置,其特征在于,所述获取单元,具体用于从该索引文件的未获取过的索引结构体中按照索引项的指定顺序获取一个索引结构体。
9.如权利要求7所述的装置,其特征在于,所述合并单元,具体用于当内存中当前缓存的所有索引结构体中存在满足合并条件的索引结构体时,将内存中当前缓存的所有索引结构体中满足合并条件的索引结构体进行合并处理,得到合并后的索引结构体;当内存中当前缓存的所有索引结构体中不存在满足合并条件的索引结构体时,将内存中当前缓存的所有索引结构体中,按照索引项的指定顺序的第一个索引结构体确定为合并后的索引结构体。
10.如权利要求9所述的装置,其特征在于,所述合并单元,具体用于当内存中当前缓存的所有索引结构体中存在满足合并条件的索引结构体时,将内存中当前缓存的所有结构体中索引项 相同的索引结构体进行合并处理。
全文摘要
本发明公开了一种索引文件合并方法及装置,循环执行如下步骤,直到对待合并的多个索引文件进行合并处理完成依次针对该多个索引文件中的每个索引文件,当该索引文件中存在未获取过的索引结构体,且内存中未缓存有该索引文件中的索引结构体时,从该索引文件的未获取过的索引结构体中按照索引项的指定顺序获取预设数量的索引结构体,得到若干个索引结构体;并将得到的该若干个索引结构体缓存到内存中;并针对内存中当前缓存的所有索引结构体,进行索引结构体的合并处理,得到合并后的索引结构体;以及将合并后的索引结构体保存到合并后索引文件中。采用本发明实施例提供的方案,降低了内存资源消耗,且提高了合并处理的效率。
文档编号G06F17/30GK103207907SQ201310105560
公开日2013年7月17日 申请日期2013年3月28日 优先权日2013年3月28日
发明者叶森 申请人:新浪网技术(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1