构建索引的方法和装置以及文件查找方法和装置制造方法及图纸

技术编号:36271456 阅读:52 留言:0更新日期:2023-01-07 10:13
本申请公开了一种构建索引的方法和装置以及文件查找方法和装置。其中,该构建索引的方法包括:多进程或多线程并行遍历待扫描目录,并行生成多个索引文件;将并行生成的多个所述索引文件根据预设的哈希规则进行哈希,并根据哈希结果重新组合成多个新的索引文件。本申请解决了海量目录文件的单线程索引和查询速度慢、性能低的技术问题。性能低的技术问题。性能低的技术问题。

【技术实现步骤摘要】
构建索引的方法和装置以及文件查找方法和装置


[0001]本申请涉及云存储领域,具体而言,涉及一种构建索引的方法和装置以及文件查找方法和装置。

技术介绍

[0002]在搜索文件时,比较通用的方案是递归遍历目录,并将遍历访问目录的结果写入到对应索引文件中,然后,再从单个索引文件中查找对应的文件记录。
[0003]相关技术中提供了一种文件搜索方法、终端设备及存储介质。其扫描文件后建立索引,根据关键词全局搜索找到目标文件。具体地,该方法包括:通过文件管理模块获取应用程序中文件的文件数据集,文件数据集包括文件、文件的位置信息和文件的上下文数据集,上下文数据集包括文件的上下文记录和对应的位置信息;通过文件管理模块建立文件数据集的文件索引;在接收到全局搜索关键词时,通过文件管理模块根据全局搜索关键词和文件索引获取目标文件。
[0004]但是,相关技术中,采用的是单进程单线程遍历目录,速度慢;遍历结果顺序写入索引文件中,导致查询性能不佳;如果目录文件很多,会造成索引过大,查询性能下降的问题。
[0005]针对上述的问题,目前尚未提出有效的解决方案。

技术实现思路

[0006]本申请实施例提供了一种构建索引的方法和装置以及文件查找方法和装置,以至少解决海量目录文件的单线程索引和查询速度慢、性能低的技术问题。
[0007]根据本申请实施例的一个方面,提供了一种构建索引的方法,包括:多进程或多线程并行遍历待扫描目录,并行生成多个索引文件;将并行生成的多个所述索引文件根据预设的哈希规则进行哈希,并根据哈希结果重新组合成多个新的索引文件。
[0008]根据本申请实施例的另一方面,还提供了一种查找索引的方法,包括:如上所述的构建索引的方法构建索引文件;基于查询指令,从所构建的索引文件进行查找。
[0009]根据本申请实施例的又一方面,还提供了一种构建索引的装置,包括:生成模块,被配置为多进程或多线程并行遍历待扫描目录,并行生成多个索引文件;哈希模块,被配置为将并行生成的多个所述索引文件根据预设的哈希规则进行哈希,并根据哈希结果重新组合成多个新的索引文件。
[0010]根据本申请实施例的又一方面,还提供了一种查找索引的装置,包括:如上所述的构建索引的装置;查找模块,被配置为:在存在查询条件且所述查询条件能够被执行哈希操作的情况下,对所述查询条件预先进行哈希操作,根据哈希结果从所构建的索引文件中与所述哈希结果相应的索引文件中查询;在不存在查询条件、或所述查询条件不能够被执行哈希操作的情况下,通过多进程或多线程并行查询所有所构建的索引文件,并将查询结果汇总。
[0011]在本申请实施例中,采用多进程或多线程并行遍历待扫描目录,并且,并行生成多个索引文件;然后,将并行生成的多个所述索引文件根据预设的哈希规则进行哈希,并根据哈希结果重新组合成多个新的索引文件,从而解决了海量目录文件的单线程索引和查询速度慢、性能低的技术问题,具有查询速度快、性能高的有益效果。
附图说明
[0012]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是根据本申请实施例的一种构建索引的方法的流程图;图2是根据本申请实施例的一种海量文件并行扫描构建索引的方法的流程图;图3是根据本申请实施例的一种查找索引的方法的流程图;图4是根据本申请实施例的一种构建索引的装置的结构示意图;图5是根据本申请实施例的一种查找索引的装置的结构示意图;图6是根据本申请实施例的另一种查找索引的方法的流程图。
具体实施方式
[0013]为了使本
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0014]需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0015]术语解释进程池/线程池:进程/线程创建与销毁过程会带来调度开销,进而影响缓存局部性能和整体性能。通过预先创建若干个进程/线程,根据任务需要为进程/线程分配任务,进程/线程执行完分配的任务后不销毁而是把状态置为等待任务,并等待新任务分配。
[0016]哈希:是一种从任何一种数据中创建小的数字“指纹”的方法。通过将数据打乱混合,重新创建一个叫做哈希值的指纹。
[0017]实施例1根据本申请实施例,提供了一种构建索引的方法的流程图,如图1所示,该方法包括:步骤S102,多进程或多线程并行遍历待扫描目录,并行生成多个索引文件。
[0018]首先,创建进程池或线程池,以容纳任务进程或任务线程,其中,所述任务进程或
所述任务线程对应一个索引文件;将所述待扫描目录添加到所述待扫描目录队列末。
[0019]接着,判断所述进程池或线程池中是否有空闲的任务进程或任务线程。
[0020]在所述进程池或线程池中没有空闲的所述任务进程或所述任务线程的情况下,等待预设的时间段,再判断所述进程池或线程池中是否有空闲的所述任务进程或所述任务线程。
[0021]在所述进程池或线程池中存在空闲的所述任务进程或所述任务线程的情况下,利用空闲的任务进程或任务线程从所述待扫描目录队列中取出待扫描目录;基于所述待扫描目录进行扫描,将扫描到的文件记录到所述任务进程或任务线程的索引文件中,并将扫描到的文件目录添加到所述待扫描目录的队列末。
[0022]步骤S104,将并行生成的多个所述索引文件根据预设的哈希规则进行哈希,并根据哈希结果重新组合成多个新的索引文件。
[0023]例如,遍历多个所述索引文件,并从多个所述索引文件取出内容条目;根据所述预设的哈希规则将所述内容条目进行哈希;根据所述哈希结果,将所述内容条目写入到对应的哈希索引文件中,以得到所述新的索引文件。例如,根据所述哈希结果重新组合多个所述索引文件,将多个所述索引文件分散到多个所述新的索引文件中。
[0024]在一些示例中,构建了索引文件之后,还可以基于查询指令,从所构建的索引文件进行查找。
[0025]例如,在存在查询条件且所述查询条件符合所述哈希规则的情况下,对所述查询条件预先进行哈希操作,根据哈希结果从所构建的索引文件中与所述哈希结果相应的索引文件本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种构建索引的方法,其特征在于,包括:多进程或多线程并行遍历待扫描目录,并行生成多个索引文件;将并行生成的多个所述索引文件根据预设的哈希规则进行哈希操作,并根据所述哈希操作的哈希结果重新组合成多个新的索引文件。2.根据权利要求1所述的方法,其特征在于,多进程或多线程并行遍历待扫描目录,并行生成多个索引文件包括:在待扫描目录队列不为空的情况下,循环执行以下步骤:利用空闲的任务进程或任务线程从所述待扫描目录队列中取出待扫描目录;基于所述待扫描目录进行扫描,将扫描到的文件记录到所述任务进程或任务线程的索引文件中,并将扫描到的文件目录添加到所述待扫描目录队列末。3.根据权利要求2所述的方法,其特征在于,在多进程或多线程并行遍历待扫描目录之前,所述方法还包括:创建进程池或线程池,以容纳任务进程或任务线程,其中,所述任务进程或所述任务线程对应一个索引文件;将所述待扫描目录添加到所述待扫描目录队列末。4.根据权利要求1所述的方法,其特征在于,将并行生成的多个所述索引文件根据预设的哈希规则进行哈希操作,并根据所述哈希操作的哈希结果重新组合成多个新的索引文件,包括:遍历多个所述索引文件,并从多个所述索引文件中取出内容条目;根据所述预设的哈希规则将所述内容条目进行哈希操作;根据所述哈希操作的哈希结果,将所述内容条目写入到对应的哈希索引文件中,以得到所述新的索引文件。5.根据权利要求3所述的方法,其特征在于,在利用空闲的任务进程或任务线程从所述待扫描目录队列中取出待扫描目录之前,所述方法还包括:判断所述进程池或线程池中是否有空闲的任务进程或任务线程;在所述进程池或线程池中没有空闲的所述任务进程或所述任务线程的情况下,等...

【专利技术属性】
技术研发人员:陈元强蔡涛吴以伯
申请(专利权)人:深圳市木浪云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1