CN102081649A - 一种搜索电脑文件的方法及其系统 - Google Patents
一种搜索电脑文件的方法及其系统 Download PDFInfo
- Publication number
- CN102081649A CN102081649A CN 201010619720 CN201010619720A CN102081649A CN 102081649 A CN102081649 A CN 102081649A CN 201010619720 CN201010619720 CN 201010619720 CN 201010619720 A CN201010619720 A CN 201010619720A CN 102081649 A CN102081649 A CN 102081649A
- Authority
- CN
- China
- Prior art keywords
- file
- character
- index
- search
- untreated
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种搜索电脑文件的方法及其系统,其中搜索电脑文件的方法包括步骤:获取搜索字符串,判断搜索字符串的长度是否大于1,在结果为是时,拆分搜索字符串为单个字符,根据预先生成的索引文件所生成的内存索引,分别获得文件名称中包含每个字符的第一文件集合;根据索引文件,筛选第一文件集合,得到文件名称中包含搜索字符串中所有字符的第二文件集合;根据索引文件,筛选第二文件集合,得到文件名称中包含搜索字符串的最终搜索结果文件。本发明根据预先生成的索引文件,生成的内存索引找到搜索目录下文件名称中包含搜索字符串的文件,而无需将每个文件名称和搜索字符串进行比对,所需搜索时间短,搜索效率高。
Description
技术领域
本发明涉及电脑文件搜索领域,尤其涉及一种能够实现快速搜索的搜索电脑文件的方法及其系统。
背景技术
使用电脑时常常需要搜索文件,一般文件管理工具带有文件搜索功能,选择一个搜索目录和需要搜索的字符串就可以搜索到搜索目录中所有包含搜索字符串的文件或目录,如果搜索目录中的文件很多时,搜索的速度就会变得很慢。
现有的文件搜索方案一般是选择电脑中的一个文件目录,遍历文件目录下的所有文件和目录,比对文件或目录中是否包含要搜索的字符串,返回所有包含搜索字符串的文件和目录。一般采用比对文件名称和搜索字符串的方法来实现,如果选择的搜索目录中包含的文件和目录很多时,搜索文件的效率低、需时长。
发明内容
本发明要解决的技术问题在于针对现有技术中搜索文件时间长、效率的缺陷,提供一种搜索电脑文件的方法及其系统。
本发明解决其技术问题所采用的技术方案是:
提供一种搜索电脑文件的方法,包括步骤:
A、获取搜索字符串,判断所述搜索字符串的长度是否大于1,在结果为是时,拆分所述搜索字符串为单个字符,根据预先生成的索引文件所生成的内存索引,分别获得文件名称中包含每个字符的第一文件集合,执行步骤B;
B、根据所述索引文件,筛选所述第一文件集合,得到文件名称中包含所述搜索字符串中所有字符的第二文件集合,执行步骤C;
C、根据所述索引文件,筛选所述第二文件集合,得到文件名称中包含所述搜索字符串的最终搜索结果文件。
本发明所述的搜索电脑文件的方法中,步骤A中,判断结果为否时,即在所述搜索字符串只有一个字符时,根据所述预先生成的索引文件所生成的内存索引,找到文件名称中包含该唯一字符的文件集合,得到所述最终搜索结果文件。
本发明所述的搜索电脑文件的方法中,所述预先生成的索引文件包括三个文件:第一索引文件file.db、第二索引文件word.db和第三索引文件index.db;生成索引文件的具体步骤为:
(a)、获取搜索目录下的所有文件,将所有文件的文件ID、上级目录ID、文件名称长度和文件名称文件写入所述第一索引文件file.db,每个文件ID和上级目录ID均记为整数,执行步骤(b);
(b)、将所有文件的名称拆分为单个字符,生成包含所有单个字符的字符集合,判断所述第二索引文件word.db中是否存在所述字符集合中的各个字符,在结果为否时,将该字符ID和字符写入所述第二索引文件word.db,字符ID记为整数,执行步骤(c);
(c)、在步骤(b)中的判断结果为是时,将该字符ID、字符所属文件ID、字符在文件名称中出现的次数和字符在文件名称中的位置写入所述第三索引文件index.db。
本发明所述的搜索电脑文件的方法中,步骤B具体包括步骤:
B1、根据索引文件在所述第一文件集合中搜索出文件名称中包含所述搜索字符串的第一个字符的第三文件集合;
B2、判断所述第三文件集合中是否存在未处理的文件,在判断结果为否时,执行步骤C;在结果为是时,取下一个未处理的文件;执行步骤B3;
B3、拆分所述搜索字符串为单个字符得到字符集合,删除第一个字符,执行B4;
B4、判断步骤B3中得到的字符集合中是否存在未处理的字符,在判断结果为否时,将此时步骤B2中所取的文件存入所述第二文件集合中,同时执行步骤B2;在判断结果为是时,取下一个未处理的字符,根据所述索引文件得到包含该字符的第四文件集合,执行步骤B5;
B5、判断所述第四文件集合中是否存在此时步骤B2中所取的文件,在判断结果为是时,执行步骤B4;在结果为否时,执行步骤B2。
本发明所述的搜索电脑文件的方法中,步骤C具体包括:
C1、判断所述第二文件集合中是否存在未处理的文件,在结果为是时,取下一个未处理的文件,从所述第三索引文件index.db生成的内存索引得到所述搜索字符串中第一个字符在该未处理文件名称中的位置集合;
C2、判断该位置集合中是否存在未处理的位置,在结果为否时,重新执行步骤C1;在结果为是时,取下一个未处理的位置,并记录该位置为第一位置变量,所述第一位置变量为整数,执行步骤C3;
C3、拆分所述搜索字符串为单个字符得到字符集合,删除第一个字符,执行步骤C4;
C4、判断步骤C3中的字符集合中是否存在未处理的字符,在结果为否时,将此时步骤C1中处理的所述第二文件集合中的文件存储到所述最终搜索结果文件中,再执行步骤C1;在结果为是时,取下一个未处理的字符,将该字符位置记为第二位置变量,所述第二位置变量的值等于此时所述第一位置变量的值加1,同时每取一个未处理的字符所述第二位变量的值再自动加1,根据所述第三索引文件生成的内存索引得到该字符在此时步骤C1中所取文件名称中的位置集合,判断该位置集合中是否包含此时所述第二位置变量的值,在结果为是时,重新执行步骤C4;在结果为否时,执行步骤C2。
本发明还提供了一种搜索电脑文件的系统,包括搜索字符串处理模块、第一文件集合生成模块、第二文件集合生成模块和最终搜索结果生成模块,其中,
所述搜索字符串处理模块包括用于获取搜索字符串的搜索字符串获取模块、用于判断所获取的搜索字符串长度的搜索字符串长度是否大于1的字符串长度判断单元、以及用于在所述判断单元的判断结果为是时将获取的所述搜索字符串拆分为单个字符的搜索字符串拆分模块;
第一文件集合生成模块,用于根据预先生成的索引文件所生成的内存索引获得文件名称中包含所述搜索字符串拆分模块中的每个字符的第一文件集合;
第二文件集合生成模块,用于根据所述索引文件从所述第一文件集合筛选出文件名称中包含所述搜索字符串中所有字符的第二文件集合;
最终搜索结果生成模块,用于根据所述索引文件从所述第二文件集合筛选出文件名称中包含所述搜索字符串的最终搜索结果文件。
本发明所述的搜索电脑文件的系统中,所述最终搜索结果生成模块包括单个字符搜索结果生成单元,该单元用于在所述判断单元的判断结果为否时,即所述字符串只有一个字符时,直接根据所述内存索引找到文件名称中包含该唯一字符的文件集合生成最终搜索结果文件。
本发明所述的搜索电脑文件的系统中,该系统还包括用于将搜索目录中的所有文件的文件名称索引生成索引文件的索引文件生成模块,所述索引文件生成模块又包括:
文件名称索引获取单元,用于获取搜索目录中所有文件的文件名称索引;
第一索引文件file.db生成单元,用于将获取的电脑文件目录下的所有文件的文件ID、上级目录的ID、文件名称长度和文件名称文件写入第一索引文件file.db;
字符集合生成单元,用于将所有文件的名称拆分为单个字符,生成包含所有单个字符的字符集合;
字符判断单元,用于判断第二索引文件word.db中是否存在所述字符集合中的各个字符;
第二索引文件word.db生成单元,用于在所述字符判断单元的判断结果为否时,将该字符ID和字符写入第二索引文件word.db;
第三索引文件index.db生成单元,用于在所述字符判断单元的判断结果为是时,将该字符ID、字符所属文件ID、字符在文件名称中出现的次数和字符在文件名称中的位置写入第三索引文件index.db。
本发明所述的搜索电脑文件的系统中,所述第二文件集合生成模块包括:
第二文件集合存储单元,用于存储所述第二文件集合;
第三文件集合生成单元,用于根据索引文件在所述第一文件集合中搜索出文件名称中包含所述搜索字符串的第一个字符的第三文件集合;
第一字符处理单元,用于拆分所述搜索字符串为单个字符,并删除第一个字符;
第一未处理文件判断单元,用于判断所述第三文件集合中是否存在未处理的文件,在判断结果为否时,转入所述最终搜索结果生成模块执行,在结果为是时,取下一个未处理的文件,转入所述第一字符处理单元执行;
文件处理单元,用于判断所述第一字符处理单元中是否存在未处理的字符,在判断结果为否时,将此时所述第一未处理文件判断单元中所取的文件存入所述第二文件集合中,同时转入所述第一未处理文件判断单元执行,在判断结果为是时,取下一个未处理的字符,根据所述索引文件得到包含该字符的第四文件集合;以及,
文件判断单元,用于判断所述第四文件集合中是否存在此时所述第一未处理文件判断单元中所取的文件,在判断结果为是时,转入所述文件处理单元执行;在结果为否时,转入所述第一未处理文件判断单元执行。
本发明所述的搜索电脑文件的系统中,所述最终搜索结果生成模块还包括:
最终搜索结果存储单元,用于存储最终搜索结果文件;
第二未处理文件判断单元,用于判断所述第二文件集合生成模块中生成的第二文件集合是否存在未处理的文件;
第一字符位置集合生成单元,用于在所述第二未处理文件判断单元的判断结果为是时,取所述第二文件集合中下一个未处理的文件,再根据所述第三索引文件index.db生成的内存索引得到所述搜索字符串中第一个字符在该未处理文件中的位置集合;
第二字符处理单元,用于拆分所述搜索字符串为单个字符,并删除第一个字符;
字符位置判断单元,用于判断所述第一字符位置集合生成单元中的位置集合中是否存在未处理的位置,在结果为否时,搜索结束;在结果为是时,记录该位置为第一位置变量,所述第一位置变量为整数,再转入所述第二字符处理单元执行;
其他字符处理单元,用于判断所述第二字符处理单元中是否存在未处理的字符,在结果为否时,将此时所述第一字符位置集合生成单元中所处理的文件存储到最终搜索结果文件单元中,再转入所述第二未处理文件判断单元执行;
其他字符位置集合生成单元,用于在所述第二字符处理单元中的判断结果为是时,取所述第二字符处理单元中的下一个未处理的字符,将该字符位置记为第二位置变量,所述第二位置变量的值等于此时所述第一位置变量的值加1,同时每取一个未处理的字符所述第二位变量的值再自动加1,根据所述第三索引文件生成的内存索引得到该字符在此时所述第一字符位置集合生成单元中所处理的文件名称中的位置集合;
位置判断单元,用于判断所述其他字符位置集合生成单元中的位置集合是否包含此时所述第二位置变量的值,在结果为是时,转入所述其他字符处理单元执行;在结果为否时,转入所述字符位置判断单元执行。
本发明产生的有益效果是:本发明根据预先生成的索引文件,获得文件名中包含搜索字符串中每个字符的文件集合,再根据索引文件筛选出文件名称中包含搜索字符串中所有字符的文件集合,最后找到文件名称中包含搜索字符串的所有文件,整个搜索过程根据预先生成的索引文件所生成的内存索引找到相应的文件,而无需将每个文件名称和搜索字符串进行比对,所需搜索时间短,搜索效率高。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明较佳实施例搜索电脑文件的方法的流程图;
图2是本发明较佳实施例搜索电脑文件的方法中预先生成索引文件的流程图;
图3是图1中步骤S5的具体流程图;
图4是图1中步骤S6的具体流程图;
图5是本发明较佳实施例搜索电脑文件的系统的原理框图一;
图6是本发明较佳实施例搜索电脑文件的系统的原理框图二。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明较佳实施例搜索电脑文件的方法主要应用于从电脑或者存储空间中找到所有文件或者某个搜索目录下文件名称中包含所需的字符串的文件,具体包括步骤:
S1、获取搜索字符串;文件搜索者输入一个任意的搜索字符串,选择一个确定的搜索范围,开始进行文件的搜索;
S2、判断搜索字符串的长度是否大于1;
S3、在搜索字符串的长度不大于1时,即搜索字符串中只有一个字符时,根据预先生成的索引文件所生成的内存索引,找到文件名称中包含该唯一字符的文件集合,得到最终搜索结果文件;
S4、在搜索字符串的长度大于1时,拆分搜索字符串为单个字符,根据预先生成的索引文件所生成的内存索引,分别获得文件名称中包含每个字符的第一文件集合,即如果搜索字符串为“abc”,则将该字符串拆分为“a”、“b”和“c”,根据预先生成的索引文件所生成的内存索引分别找到文件名称中包含单个字符“a”、“b”或者“c”的文件集合,即第一文件集合;
S5、根据索引文件,筛选第一文件集合,得到文件名称中包含搜索字符串中所有字符的第二文件集合,如果搜索字符串为“abc”,则此时的第二文件集合中的每个文件的名称都包括字符“abc”,文件名称中所包含的字符abc的顺序可以是任意的,且这三个字符的中间可以有任意的字符;
S6、根据索引文件,筛选第二文件集合,得到文件名称中包含搜索字符串的最终搜索结果文件,该最终搜索结果文件既可以保存在用于存放最终搜索结果文件的文件夹中,待搜索结束时集中显示,也可以在搜索到每一个文件名称中包含搜索字符串的最终搜索结果文件时实时显示,本发明较佳实施例采用前者。
在上述具体搜索过程开始之前会对是否存在预先生成的索引文件的判断,若不存在索引文件,则根据搜索目录生成搜索目录中所有文件的索引文件,索引文件包括三个文件:
第一索引文件file.db用于存放文件的数据,包括文件ID(IDentity唯一标识)、文件的上级目录ID、文件名称的长度、文件名称。为了节约存储空间和便于区别,索引文件中的ID均设置为整数,“文件ID”的存储占用4字节,“文件的上级目录ID”的存储占用4字节,“文件名称的长度”的存储占用1字节,“文件名称”的存储占用[2*文件名称的长度]字节,格式如下:
第二索引文件word.db用于存放字符的数据,包括字符ID、字符。“字符ID”的存储占用2字节,“字符”的存储占用2字节,以文件名称为ababb和88a88为例,格式如下:
1 | a | 2 | b | 3 | 8 | … | 第n个字符的ID | 第n个字符 | … |
第三索引文件index.db存放字符和所属文件的数据,包括字符ID、字符所属文件ID、字符在文件中出现的次数,字符在文件中的位置。“字符ID”的存储占用2字节,“字符所属文件ID”的存储占用4字节,“字符在文件中出现的次数”的存储占用1字节,“字符在文件中的位置”的存储占用[字符在文件中出现的次数]字节。以文件名称为ababb和88a88为例,格式如下:
如图2所示,生成索引文件的具体步骤为:
S101、获取搜索目录下的所有文件;
S102、依次处理所有文件,判断电脑中是否存在未处理的文件,若结果为否,则结束索引文件搜索程序;
S103、在存在未处理的文件时,取下一个未处理文件,将该文件的文件ID、上级目录的ID、文件名称长度和文件名称文件写入第一索引文件file.db;
S104、将所取文件的名称拆分为单个字符,生成包含所有单个字符的字符集合;
S105、判断字符集合中是否存在未处理的字符,在结果为否时,执行步骤S102;
S106、取未处理字符中的下一个未处理的字符;
S107、判断第二索引文件word.db中是否存在该字符,在结果为是时,执行步骤S109;
S108、若不存在该字符,则将该字符ID和字符写入第二索引文件word.db;
S109、在步骤S107中的判断结果为是时,将该字符ID、字符所属文件ID、字符在文件名称中出现的次数和字符在文件名称中的位置写入第三索引文件index.db,同时执行步骤S105。
生成索引文件后,再根据索引文件对应生成的内存索引可以迅速完成搜索的过程,搜索效率会有很大的提高。
进一步地,如图3所示,为本发明较佳实施例搜索电脑文件的方法中要得到文件名称中包含搜索字符串中所有字符的第二文件集合的具体流程,即图1中步骤S5又具体包括步骤:
S501、根据索引文件在第一文件集合中搜索出文件名称中包含搜索字符串的第一个字符的第三文件集合;
S502、判断第三文件集合中是否存在未处理的文件,在判断结果为否时,执行步骤S6;
S503、在步骤S502中的判断结果为是时,取下一个未处理的文件;
S504、拆分搜索字符串为单个字符得到字符集合,删除搜索字符串中的第一个字符;
S505、判断步骤S504中得到的字符集合中是否存在未处理的字符;
S506、在步骤S505中的判断结果为否时,将此时步骤S503中所取的文件存入第二文件集合中,同时执行步骤S502;
S507、在步骤S505中的判断结果为是时,取下一个未处理的字符,根据索引文件得到包含该字符的第四文件集合;
S508、判断第四文件集合中是否存在此时步骤S503中所取的文件,在判断结果为是时,执行步骤S505;在结果为否时,执行步骤S502。
进一步地,如图4所示,为本发明较佳实施例搜索电脑文件的方法中要得到文件名称中包含搜索字符串的最终搜索结果文件的具体流程,即图1中步骤S6又具体包括步骤:
S601、判断第二文件集合中是否存在未处理的文件,在结果为否时,搜索结束;
S602、在第二集合中仍然存在未处理的文件时,取下一个未处理的文件,从第三索引文件index.db生成的内存索引得到搜索字符串中第一个字符在该未处理文件名称中的位置集合;若搜索字符串为“abc”,该未处理文件的名称为“acdeabf”,则搜索字符串中第一个字符a在该未处理文件名称中的位置集合为1和5;
S603、判断该位置集合中是否存在未处理的位置,在结果为否时,执行步骤S601;
S604、在S603的判断结果为是时,取下一个未处理的位置,并根据索引文件记录该位置为第一位置变量pos1,第一位置变量pos1为整数;
S605、拆分搜索字符串为单个字符得到字符集合,删除字符集合中搜索字符串的第一个字符;
S606、判断步骤S605中的字符集合中是否存在未处理的字符,在结果为否时,执行步骤S607;
S607、将此时步骤S602中处理的第二文件集合中的文件存储到最终搜索结果文件中,再执行步骤S601;
S608、在步骤S605中的字符集合中存在未处理的字符时,取下一个未处理的字符,将该字符位置记为第二位置变量pos2,第二位置变量pos2的值等于此时步骤S604中第一位置变量pos1的值加1,同时每取一个未处理的字符第二位变量pos2的值再自动加1,根据第三索引文件生成的内存索引得到该字符此时在S602中所取文件名称中的位置集合;
S609、判断该位置集合中是否包含此时步骤S608中第二位变量pos2的值,在结果为是时,重新执行步骤S606;在结果为否时,执行步骤S603。
本发明较佳实施例还提供了一种搜索电脑文件的系统,如图5所示,包括搜索字符串处理模块100、第一文件集合生成模块200、第二文件集合生成模块300和最终搜索结果生成模块400,其中,
搜索字符串处理模块100包括用于获取搜索字符串的搜索字符串获取模块101、用于判断所获取的搜索字符串长度的搜索字符串长度是否大于1的字符串长度判断单元102、以及用于在判断单元的判断结果为是时将获取的搜索字符串拆分为单个字符的搜索字符串拆分模块103;
第一文件集合生成模块200,用于根据预先生成的索引文件所生成的内存索引获得文件名称中包含搜索字符串拆分模块103中的每个字符的第一文件集合;
第二文件集合生成模块300,用于根据索引文件从第一文件集合筛选出文件名称中包含搜索字符串中所有字符的第二文件集合;
最终搜索结果生成模块400,用于根据索引文件从第二文件集合筛选出文件名称中包含搜索字符串的最终搜索结果文件。
进一步地,如6所示,本发明较佳实施例搜索电脑文件的系统中,最终搜索结果生成模块400包括单个字符搜索结果生成单元401,该单元用于在判断单元的判断结果为否时,即字符串只有一个字符时,直接根据内存索引找到文件名称中包含该唯一字符的文件集合生成最终搜索结果文件。
进一步地,如6所示,本发明较佳实施例搜索电脑文件的系统中,还包括索引文件生成模块500,用于将搜索目录中的所有文件的文件名称索引生成索引文件。索引文件主要包括第一索引文件file.db、第二索引文件word.db和第三索引文件index.db,其格式与本发明较佳实施例搜索电脑文件的方法中的格式相同,在次不再赘述。
索引文件生成模块500又包括:文件名称索引获取单元501、第一索引文件file.db生成单元502、字符集合生成单元503、字符判断单元504、第二索引文件word.db生成单元505和第三索引文件index.db生成单元506。其中,文件名称索引获取单元501,用于获取搜索目录中所有文件的文件名称索引;第一索引文件file.db生成单元502,用于将获取的电脑文件目录下的所有文件的文件ID、上级目录的ID、文件名称长度和文件名称文件写入第一索引文件file.db;字符集合生成单元503,用于将所有文件的名称拆分为单个字符,生成包含所有单个字符的字符集合;字符判断单元504,用于判断第二索引文件word.db中是否存在字符集合中的各个字符;第二索引文件word.db生成单元505,用于在字符判断单元504的判断结果为否时,将该字符ID和字符写入第二索引文件word.db;第三索引文件index.db生成单元506,用于在字符判断单元504的判断结果为是时,将该字符ID、字符所属文件ID、字符在文件名称中出现的次数和字符在文件名称中的位置写入第三索引文件index.db。
进一步地,如6所示,本发明较佳实施例搜索电脑文件的系统中,第二文件集合生成模块300包括:第二文件集合存储单元306、第三文件集合生成单元301、第一未处理文件判断单元302、第一字符处理单元303、文件处理单元304和文件判断单元305。其中,第二文件集合存储单元306,用于存储第二文件集合;第三文件集合生成单元301,用于根据索引文件在第一文件集合中搜索出文件名称中包含搜索字符串的第一个字符的第三文件集合;第一字符处理单元303,用于拆分搜索字符串为单个字符,并删除第一个字符;第一未处理文件判断单元302,用于判断第三文件集合中是否存在未处理的文件,在判断结果为否时,转入最终搜索结果生成模块400执行,在结果为是时,取下一个未处理的文件,转入第一字符处理单元执行;文件处理单元304,用于判断第一字符处理单元303中是否存在未处理的字符,在判断结果为否时,将此时第一未处理文件判断单元302中所取的文件存入第二文件集合中,同时转入第一未处理文件判断单元302执行,在判断结果为是时,取下一个未处理的字符,根据索引文件得到包含该字符的第四文件集合;文件判断单元305,用于判断第四文件集合中是否存在此时第一未处理文件判断单元302中所取的文件,在判断结果为是时,转入文件处理单元304执行;在结果为否时,转入第一未处理文件判断单元302执行。
进一步地,如6所示,本发明较佳实施例搜索电脑文件的系统中,最终搜索结果生成模块400还包括:最终搜索结果存储单元402、
最终搜索结果存储单元402,用于存储最终搜索结果文件;
第二未处理文件判断单元403,用于判断第二文件集合生成模块300中生成的第二文件集合是否存在未处理的文件;
第一字符位置集合生成单元404,用于在第二未处理文件判断单元403的判断结果为是时,取第二文件集合中下一个未处理的文件,再根据第三索引文件index.db生成的内存索引得到搜索字符串中第一个字符在该未处理文件中的位置集合;
第二字符处理单元406,用于拆分搜索字符串为单个字符,并删除第一个字符;
字符位置判断单元405,用于判断第一位置集合生成单元404中的位置集合中是否存在未处理的位置,在结果为否时,搜索结束;在结果为是时,记录该位置为第一位置变量,第一位置变量为整数,再转入第二字符处理单元406执行;
其他字符处理单元407,用于判断第二字符处理单元406中是否存在未处理的字符,在结果为否时,将此时第一字符位置集合生成单元404中所处理的文件存储到最终搜索结果文件单元402中,再转入第二未处理文件判断单元403执行;
其他字符位置集合生成单元408,用于在第二字符处理单元406中的判断结果为是时,取第二字符处理单元406中的下一个未处理的字符,将该字符位置记为第二位置变量,第二位置变量的值等于此时第一位置变量的值加1,同时每取一个未处理的字符第二位变量的值再自动加1,根据第三索引文件生成的内存索引得到该字符在此时第一字符位置集合生成单元404中所处理的文件名称中的位置集合;
位置判断单元409,用于判断其他字符位置集合生成单元408中的位置集合是否包含此时其他字符位置集合生成单元408中第二位置变量的值,在结果为是时,转入其他字符处理单元执行408;在结果为否时,转入字符位置判断单元405执行。
本发明根据预先生成的索引文件,获得文件名中包含搜索字符串中每个字符的文件集合,再根据索引文件筛选出文件名称中包含搜索字符串中所有字符的文件集合,最后找到文件名称中包含搜索字符串的所有文件,整个搜索过程根据预先生成的索引文件所生成的内存索引找到相应的文件,而无需将每个文件名称和搜索字符串进行比对,所需搜索时间短,搜索效率高。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (10)
1.一种搜索电脑文件的方法,其特征在于,包括步骤:
A、获取搜索字符串,判断所述搜索字符串的长度是否大于1,在结果为是时,拆分所述搜索字符串为单个字符,根据预先生成的索引文件所生成的内存索引,分别获得文件名称中包含每个字符的第一文件集合,执行步骤B;
B、根据所述索引文件,筛选所述第一文件集合,得到文件名称中包含所述搜索字符串中所有字符的第二文件集合,执行步骤C;
C、根据所述索引文件,筛选所述第二文件集合,得到文件名称中包含所述搜索字符串的最终搜索结果文件。
2.根据权利要求1所述的搜索电脑文件的方法,其特征在于,步骤A中,判断结果为否时,即在所述搜索字符串只有一个字符时,根据所述预先生成的索引文件所生成的内存索引,找到文件名称中包含该唯一字符的文件集合,得到所述最终搜索结果文件。
3.根据权利要求2所述的搜索电脑文件的方法,其特征在于,所述预先生成的索引文件包括三个文件:第一索引文件file.db、第二索引文件word.db和第三索引文件index.db;生成索引文件的具体步骤为:
(a)、获取搜索录下的所有文件,将所有文件的文件ID、上级目录ID、文件名称长度和文件名称文件写入所述第一索引文件file.db,每个文件ID和上级目录ID均记为整数,执行步骤(b);
(b)、将所有文件的名称拆分为单个字符,生成包含所有单个字符的字符集合,判断所述第二索引文件word.db中是否存在所述字符集合中的各个字符,在结果为否时,将该字符ID和字符写入所述第二索引文件word.db,字符ID记为整数,执行步骤(c);
(c)、在步骤(b)中的判断结果为是时,将该字符ID、字符所属文件ID、字符在文件名称中出现的次数和字符在文件名称中的位置写入所述第三索引文件index.db。
4.根据权利要求3所述的搜索电脑文件的方法,其特征在于,步骤B具体包括步骤:
B1、根据索引文件在所述第一文件集合中搜索出文件名称中包含所述搜索字符串的第一个字符的第三文件集合;
B2、判断所述第三文件集合中是否存在未处理的文件,在判断结果为否时,执行步骤C;在结果为是时,取下一个未处理的文件;执行步骤B3;
B3、拆分所述搜索字符串为单个字符得到字符集合,删除第一个字符,执行B4;
B4、判断步骤B3中得到的字符集合中是否存在未处理的字符,在判断结果为否时,将此时步骤B2中所取的文件存入所述第二文件集合中,同时执行步骤B2;在判断结果为是时,取下一个未处理的字符,根据所述索引文件得到包含该字符的第四文件集合,执行步骤B5;
B5、判断所述第四文件集合中是否存在此时步骤B2中所取的文件,在判断结果为是时,执行步骤B4;在结果为否时,执行步骤B2。
5.根据权利要求4所述的搜索电脑文件的方法,其特征在于,步骤C具体包括:
C1、判断所述第二文件集合中是否存在未处理的文件,在结果为是时,取下一个未处理的文件,从所述第三索引文件index.db生成的内存索引得到所述搜索字符串中第一个字符在该未处理文件名称中的位置集合;
C2、判断该位置集合中是否存在未处理的位置,在结果为否时,重新执行步骤C1;在结果为是时,取下一个未处理的位置,并记录该位置为第一位置变量,所述第一位置变量为整数,执行步骤C3;
C3、拆分所述搜索字符串为单个字符得到字符集合,删除第一个字符,执行步骤C4;
C4、判断步骤C3中的字符集合中是否存在未处理的字符,在结果为否时,将此时步骤C1中处理的所述第二文件集合中的文件存储到所述最终搜索结果文件中,再执行步骤C1;在结果为是时,取下一个未处理的字符,将该字符位置记为第二位置变量,所述第二位置变量的值等于此时所述第一位置变量的值加1,同时每取一个未处理的字符所述第二位变量的值再自动加1,根据所述第三索引文件生成的内存索引得到该字符在此时步骤C1中所取文件名称中的位置集合,判断该位置集合中是否包含此时所述第二位置变量的值,在结果为是时,重新执行步骤C4;在结果为否时,执行步骤C2。
6.一种搜索电脑文件的系统,其特征在于,包括搜索字符串处理模块、第一文件集合生成模块、第二文件集合生成模块和最终搜索结果生成模块,其中,
所述搜索字符串处理模块包括用于获取搜索字符串的搜索字符串获取模块、用于判断所获取的搜索字符串长度的搜索字符串长度是否大于1的字符串长度判断单元、以及用于在所述判断单元的判断结果为是时将获取的所述搜索字符串拆分为单个字符的搜索字符串拆分模块;
第一文件集合生成模块,用于根据预先生成的索引文件所生成的内存索引获得文件名称中包含所述搜索字符串拆分模块中的每个字符的第一文件集合;
第二文件集合生成模块,用于根据所述索引文件从所述第一文件集合筛选出文件名称中包含所述搜索字符串中所有字符的第二文件集合;
最终搜索结果生成模块,用于根据所述索引文件从所述第二文件集合筛选出文件名称中包含所述搜索字符串的最终搜索结果文件。
7.根据权利要求6所述的搜索电脑文件的系统,其特征在于,所述最终搜索结果生成模块包括单个字符搜索结果生成单元,该单元用于在所述判断单元的判断结果为否时,即所述字符串只有一个字符时,直接根据所述内存索引找到文件名称中包含该唯一字符的文件集合生成最终搜索结果文件。
8.根据权利要求7所述的搜索电脑文件的系统,其特征在于,该系统还包括用于将搜索目录中的所有文件的文件名称索引生成索引文件的索引文件生成模块,所述索引文件生成模块又包括:
文件名称索引获取单元,用于获取搜索目录中所有文件的文件名称索引;
第一索引文件file.db生成单元,用于将获取的电脑文件目录下的所有文件的文件ID、上级目录的ID、文件名称长度和文件名称文件写入第一索引文件file.db;
字符集合生成单元,用于将所有文件的名称拆分为单个字符,生成包含所有单个字符的字符集合;
字符判断单元,用于判断第二索引文件word.db中是否存在所述字符集合中的各个字符;
第二索引文件word.db生成单元,用于在所述字符判断单元的判断结果为否时,将该字符ID和字符写入第二索引文件word.db;
第三索引文件index.db生成单元,用于在所述字符判断单元的判断结果为是时,将该字符ID、字符所属文件ID、字符在文件名称中出现的次数和字符在文件名称中的位置写入第三索引文件index.db。
9.根据权利要求8所述的搜索电脑文件的系统,其特征在于, 所述第二文件集合生成模块包括:
第二文件集合存储单元,用于存储所述第二文件集合;
第三文件集合生成单元,用于根据索引文件在所述第一文件集合中搜索出文件名称中包含所述搜索字符串的第一个字符的第三文件集合;
第一字符处理单元,用于拆分所述搜索字符串为单个字符,并删除第一个字符;
第一未处理文件判断单元,用于判断所述第三文件集合中是否存在未处理的文件,在判断结果为否时,转入所述最终搜索结果生成模块执行,在结果为是时,取下一个未处理的文件,转入所述第一字符处理单元执行;
文件处理单元,用于判断所述第一字符处理单元中是否存在未处理的字符,在判断结果为否时,将此时所述第一未处理文件判断单元中所取的文件存入所述第二文件集合中,同时转入所述第一未处理文件判断单元执行,在判断结果为是时,取下一个未处理的字符,根据所述索引文件得到包含该字符的第四文件集合;以及,
文件判断单元,用于判断所述第四文件集合中是否存在此时所述第一未处理文件判断单元中所取的文件,在判断结果为是时,转入所述文件处理单元执行;在结果为否时,转入所述第一未处理文件判断单元执行。
10.根据权利要求9所述的搜索电脑文件的系统,其特征在于, 所述最终搜索结果生成模块还包括:
最终搜索结果存储单元,用于存储最终搜索结果文件;
第二未处理文件判断单元,用于判断所述第二文件集合生成模块中生成的第二文件集合是否存在未处理的文件;
第一字符位置集合生成单元,用于在所述第二未处理文件判断单元的判断结果为是时,取所述第二文件集合中下一个未处理的文件,再根据所述第三索引文件index.db生成的内存索引得到所述搜索字符串中第一个字符在该未处理文件中的位置集合;
第二字符处理单元,用于拆分所述搜索字符串为单个字符,并删除第一个字符;
字符位置判断单元,用于判断所述第一字符位置集合生成单元中的位置集合中是否存在未处理的位置,在结果为否时,搜索结束;在结果为是时,记录该位置为第一位置变量,所述第一位置变量为整数,再转入所述第二字符处理单元执行;
其他字符处理单元,用于判断所述第二字符处理单元中是否存在未处理的字符,在结果为否时,将此时所述第一字符位置集合生成单元中所处理的文件存储到最终搜索结果文件单元中,再转入所述第二未处理文件判断单元执行;
其他字符位置集合生成单元,用于在所述第二字符处理单元中的判断结果为是时,取所述第二字符处理单元中的下一个未处理的字符,将该字符位置记为第二位置变量,所述第二位置变量的值等于此时所述第一位置变量的值加1,同时每取一个未处理的字符所述第二位变量的值再自动加1,根据所述第三索引文件生成的内存索引得到该字符在此时所述第一字符位置集合生成单元中所处理的文件名称中的位置集合;
位置判断单元,用于判断所述其他字符位置集合生成单元中的位置集合是否包含此时所述第二位置变量的值,在结果为是时,转入所述其他字符处理单元执行;在结果为否时,转入所述字符位置判断单元执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106197208A CN102081649B (zh) | 2010-12-31 | 2010-12-31 | 一种搜索电脑文件的方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106197208A CN102081649B (zh) | 2010-12-31 | 2010-12-31 | 一种搜索电脑文件的方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102081649A true CN102081649A (zh) | 2011-06-01 |
CN102081649B CN102081649B (zh) | 2012-08-15 |
Family
ID=44087612
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010106197208A Active CN102081649B (zh) | 2010-12-31 | 2010-12-31 | 一种搜索电脑文件的方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102081649B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102236706A (zh) * | 2011-06-17 | 2011-11-09 | 浙江大学 | 一种海量中文文件名快速模糊拼音查询方法 |
CN104156431A (zh) * | 2014-08-08 | 2014-11-19 | 西安交通大学 | 一种基于实体图社团结构的rdf关键词查询方法 |
CN104679829A (zh) * | 2015-01-28 | 2015-06-03 | 北京易华录信息技术股份有限公司 | 对车牌号进行快速搜索的方法及装置 |
CN105279278A (zh) * | 2015-11-13 | 2016-01-27 | 珠海市君天电子科技有限公司 | 文件的搜索方法及装置 |
WO2017032249A1 (zh) * | 2015-08-26 | 2017-03-02 | 腾讯科技(深圳)有限公司 | 视频文件展示方法和系统 |
CN110971987A (zh) * | 2019-12-17 | 2020-04-07 | 广州酷狗计算机科技有限公司 | 视频信息获取方法、装置、计算机设备及存储介质 |
CN112650893A (zh) * | 2020-12-18 | 2021-04-13 | 浙江诺诺网络科技有限公司 | 一种字符串检索方法、系统、设备及计算机可读存储介质 |
CN112784253A (zh) * | 2021-02-09 | 2021-05-11 | 珠海豹趣科技有限公司 | 文件系统的信息获取方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6640225B1 (en) * | 1999-09-30 | 2003-10-28 | International Business Machines Corporation | Search method using an index file and an apparatus therefor |
EP1457898A2 (en) * | 2003-03-14 | 2004-09-15 | Hewlett-Packard Company | Data search system and method |
CN101136016A (zh) * | 2006-09-01 | 2008-03-05 | 北大方正集团有限公司 | 一种全文检索系统的索引在线更新方法 |
CN101576897A (zh) * | 2008-05-09 | 2009-11-11 | 鸿富锦精密工业(深圳)有限公司 | 文件内容检索系统及方法 |
CN101620607A (zh) * | 2008-07-01 | 2010-01-06 | 全国组织机构代码管理中心 | 全文检索方法及系统 |
CN101676899A (zh) * | 2008-09-18 | 2010-03-24 | 上海宝信软件股份有限公司 | 海量数据库记录的归档和查询方法 |
-
2010
- 2010-12-31 CN CN2010106197208A patent/CN102081649B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6640225B1 (en) * | 1999-09-30 | 2003-10-28 | International Business Machines Corporation | Search method using an index file and an apparatus therefor |
EP1457898A2 (en) * | 2003-03-14 | 2004-09-15 | Hewlett-Packard Company | Data search system and method |
CN101136016A (zh) * | 2006-09-01 | 2008-03-05 | 北大方正集团有限公司 | 一种全文检索系统的索引在线更新方法 |
CN101576897A (zh) * | 2008-05-09 | 2009-11-11 | 鸿富锦精密工业(深圳)有限公司 | 文件内容检索系统及方法 |
CN101620607A (zh) * | 2008-07-01 | 2010-01-06 | 全国组织机构代码管理中心 | 全文检索方法及系统 |
CN101676899A (zh) * | 2008-09-18 | 2010-03-24 | 上海宝信软件股份有限公司 | 海量数据库记录的归档和查询方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102236706A (zh) * | 2011-06-17 | 2011-11-09 | 浙江大学 | 一种海量中文文件名快速模糊拼音查询方法 |
CN102236706B (zh) * | 2011-06-17 | 2012-12-05 | 浙江大学 | 一种海量中文文件名快速模糊拼音查询方法 |
CN104156431A (zh) * | 2014-08-08 | 2014-11-19 | 西安交通大学 | 一种基于实体图社团结构的rdf关键词查询方法 |
CN104156431B (zh) * | 2014-08-08 | 2018-04-17 | 西安交通大学 | 一种基于实体图社团结构的rdf关键词查询方法 |
CN104679829A (zh) * | 2015-01-28 | 2015-06-03 | 北京易华录信息技术股份有限公司 | 对车牌号进行快速搜索的方法及装置 |
WO2017032249A1 (zh) * | 2015-08-26 | 2017-03-02 | 腾讯科技(深圳)有限公司 | 视频文件展示方法和系统 |
CN105279278A (zh) * | 2015-11-13 | 2016-01-27 | 珠海市君天电子科技有限公司 | 文件的搜索方法及装置 |
CN105279278B (zh) * | 2015-11-13 | 2019-03-12 | 珠海豹趣科技有限公司 | 文件的搜索方法及装置 |
CN110971987A (zh) * | 2019-12-17 | 2020-04-07 | 广州酷狗计算机科技有限公司 | 视频信息获取方法、装置、计算机设备及存储介质 |
CN112650893A (zh) * | 2020-12-18 | 2021-04-13 | 浙江诺诺网络科技有限公司 | 一种字符串检索方法、系统、设备及计算机可读存储介质 |
CN112784253A (zh) * | 2021-02-09 | 2021-05-11 | 珠海豹趣科技有限公司 | 文件系统的信息获取方法、装置、电子设备及存储介质 |
CN112784253B (zh) * | 2021-02-09 | 2024-06-11 | 珠海豹趣科技有限公司 | 文件系统的信息获取方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102081649B (zh) | 2012-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102081649B (zh) | 一种搜索电脑文件的方法及其系统 | |
CN100504866C (zh) | 一种综合搜索结果的排序系统及方法 | |
CN100458779C (zh) | 扩展索引的方法 | |
CN101446962B (zh) | 一种数据转换方法、装置及数据处理系统 | |
CN102662974B (zh) | 一种基于邻接节点树的网络图索引方法 | |
CN102411617B (zh) | 一种对海量url进行存储和查询方法 | |
CN101221530B (zh) | 一种测试用例自动导入方法 | |
CN103020281A (zh) | 一种基于空间数据数值索引的数据存储与检索方法 | |
CN104679875B (zh) | 一种基于数字报纸的资讯数据分类方法 | |
KR101740271B1 (ko) | 온라인 상에서 실시간으로 업데이트되는 대규모 오디오 핑거프린트 데이터베이스의 구축 방법 및 장치 | |
CN105512229B (zh) | 一种ip地址的地域信息的存储、查询方法及装置 | |
CN102163226A (zh) | 基于映射-化简和分词及邻接排序去重方法 | |
CN103714149A (zh) | 一种自适应增量式的深层网络数据源发现方法 | |
CN102073740A (zh) | 基于基数排序的字符串后缀数组构造方法 | |
CN102693304A (zh) | 一种搜索引擎的反馈信息处理方法及搜索引擎 | |
CN109903186A (zh) | 一种基于私有云的清单智能组价方法 | |
CN100477593C (zh) | 网络社区中相关讨论区的选取方法及选取装置 | |
CN102053979A (zh) | 一种信息收集方法和系统 | |
CN104408128B (zh) | 一种基于b+树异步更新索引的读优化方法 | |
CN103914487A (zh) | 文档的采集、标识及关联的系统 | |
CN104268158A (zh) | 一种结构化数据分布式索引及检索方法 | |
CN105912696A (zh) | 一种基于对数归并的dns索引创建方法及查询方法 | |
CN104636368A (zh) | 数据检索方法、装置及服务器 | |
CN104615782A (zh) | 基于滑动窗口最大匹配算法的地址匹配方法 | |
CN106446133A (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 |