一种文件数据的读取、查询方法、装置及可读存储介质
技术领域
本发明涉及文件存储和读取技术领域,尤其涉及一种文件数据的读取、查询方法、装置及可读存储介质。
背景技术
随着智能终端设备的普及,常常需要读取设备中的文件,当终端设备的数据存储达到一定数量级的情况下,读取速度将会大大降低。例如当一个文件中有10万行数据时,如果逐行读取每一行数据到内存中,需要进行10万次IO操作,导致文件数据初始化到内存中时耗时比较长,这在现如今的设备中是不可忍受的现象,导致用户体验很差。
发明内容
本发明提供一种文件数据的读取、查询方法、装置及可读存储介质,具有快速读取文件数据的特点。
本发明提供一种文件数据的读取方法,包括:获取文本信息;提取所述文本信息中所需关键词;判断键值对数据库中是否存在对应所述提取关键词的值信息;若判定键值对数据库中存在对应所述提取关键词的值信息,则将所述关键词和对应值信息保存到索引文件中,将所述索引文件加载到内存中。
在一可实施方式中,将所述关键词和对应值信息保存到索引文件中,包括:将所述关键词和对应值信息添加到数据结构中;计算所述关键词的哈希值;将所述数据结构根据所述哈希值进行排序;将排序后所述数据结构存储到索引文件中。
在一可实施方式中,将排序后所述数据结构存储到索引文件中,包括:采用二进制格式将排序后所述数据结构存储到索引文件中。
在一可实施方式中,所述索引文件至少包括头文件信息、一级索引和核心数据;其中,所述头文件信息包括一级索引地址;所述一级索引包括所述关键词的哈希值、关键词索引和值索引;所述核心数据包括关键词数据和值信息数据;所述一级索引地址指向所述一级索引,所述关键词索引指向所述关键词数据,所述值索引指向所述值信息数据。
在一可实施方式中,所述一级索引还包括所述关键词字节长度和所述值信息字节长度。
本发明另一方面提供一种文件数据的查询方法,包括:获取待查关键词;计算所述待查关键词的哈希值;判断索引文件中是否存在所述待查关键词的哈希值;若判定索引文件中存在所述待查关键词的哈希值,则获取对应所述待查关键词的值信息。
在一可实施方式中,在获取对应所述待查关键词的值信息之前,所述方法还包括:若判定索引文件中存在所述待查关键词的哈希值,则进一步判断待查关键词是否与所述索引文件中对应哈希值的关键词一致;若判定待查关键词与所述索引文件中对应哈希值的关键词一致,则获取对应所述待查关键词的值信息。
在一可实施方式中,通过二分法判断索引文件中是否存在所述待查关键词的哈希值。
本发明另一方面提供一种文件数据的读取装置,所述装置包括:获取模块,用于获取文本信息;提取模块,用于提取所述文本信息中所需关键词;判断模块,用于判断键值对数据库中是否存在对应所述提取关键词的值信息;存储模块,用于若经所述判断模块判定键值对数据库中存在对应所述提取关键词的值信息,则将所述关键词和对应值信息保存到索引文件中。
本发明另一方面提供一种文件数据的查询装置,所述装置包括:获取模块,用于获取待查关键词;计算模块,用于计算所述待查关键词的哈希值;判断模块,用于判断索引文件中是否存在所述待查关键词的哈希值;查询模块,用于若所述判断模块判定索引文件中存在所述待查关键词的哈希值,则获取对应所述待查关键词的值信息。
本发明另一方面提供一种计算机可读存储介质,所述存储介质中存储有计算机可执行指令,当所述指令被执行时用于执行所述文件数据的读取方法。
本发明另一方面提供一种计算机可读存储介质,所述存储介质中存储有计算机可执行指令,当所述指令被执行时用于执行所述文件数据的查询方法。
本发明实施例所述的一种文件数据的读取、查询方法、装置及可读存储介质,先将大量数据存储到索引文件中,再通过索引文件一次性加载到内存中,相比较于传统方式中将大量数据逐行读取到内存而言,此方案能加快读取的速度,从而缩短数据读取时间。
需要理解的是,本发明的教导并不需要实现上面所述的全部有益效果,而是特定的技术方案可以实现特定的技术效果,并且本发明的其他实施方式还能够实现上面未提到的有益效果。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1为本发明实施例一种文件数据的读取方法的实现流程示意图;
图2为本发明实施例一种文件数据的读取方法中索引文件的结构图;
图3为本发明实施例一种文件数据的读取方法中索引文件的详细结构图;
图4为本发明实施例一种文件数据的读取装置的结构示意图;
图5为本发明实施例一种文件数据的查询方法的实现流程示意图;
图6为本发明实施例一种文件数据的查询装置的结构示意图。
具体实施方式
为使本发明的目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例一种文件数据的读取方法的实现流程示意图。
如图1所示,一种文件数据的读取方法,包括:
步骤101:获取文本信息;
步骤102:提取文本信息中所需关键词;
步骤103:判断键值对数据库中是否存在对应提取关键词的值信息;
步骤104:若判定键值对数据库中存在对应提取关键词的值信息,则将关键词和对应值信息保存到索引文件中;
步骤105:将索引文件加载到内存中。
本发明实施例中,首先通过步骤101,获得文本信息,获取方式包括但不限于以下几种:通过网络获取文本信息、通过键盘直接录入文本信息、通过OCR(光学字符识别技术)进行文本信息的录入、通过语音识别技术进行文本信息的录入。
再通过步骤102,提取文本中所需关键词,并将提取到的所有所需关键词形成关键词库。其中,所需关键词为同一类别的信息,例如所需关键词可以为文档中的所有地名、人名、数字等等。提取方式包括但不限制于以下几种:穷举文本信息中所有文字排列组合,将所有文字排列组合跟含有所有同一类别的词典进行匹配,若词典包含某一个文字排列组合,则该文字排列组合为所需关键词;或者通过人工智能自然语言算法提取文本中的所需关键词。
再通过步骤103,判断键值对数据库中是否存在所提取到的关键词,其中,键值对数据库存有同一类别的关键词信息和对应关键词的值信息,可通过关键词信息获得对应的值信息。判断时,具体判断键值对数据库中的关键词是否包含关键词库中的所需关键词。
再通过步骤104,若判定键值对数据库中的关键词包含关键词库中的所需关键词,则根据所需关键词获取对应的值信息,再将所需关键词和对应的值信息保存到一定格式的索引文件中。
最后通过步骤105,将存有所需关键词和对应值信息的索引文件一次性加载到内存中。
通过此方案,先将大量数据存储到索引文件中,再通过索引文件一次性加载到内存中,相比较于传统方式中将大量数据逐行读取到内存而言,此方案能加快文件读取的速度,从而缩短数据读取时间。此方案可用于判断文档中的人名、号码是否为本业务中的白名单或者黑名单等应用场景。
在一可实施方式中,将关键词和对应值信息保存到索引文件中,包括:
将关键词和对应值信息添加到数据结构中;
计算关键词的哈希值;
将数据结构根据哈希值进行排序;
将排序后数据结构存储到索引文件中。
本发明实施例中,将关键词和对应值信息存入到数据结构中,其中,本实施例中数据结构优选为数组或者是HashMap。在数据结构中,可根据关键词获取对应的值信息。
再计算数据结构中每个关键词的哈希值,并根据哈希值进行排序,排序方式可以是升序,也可以是降序,最后将排序后的数据结构储存到索引文件中。
通过此方案,首先将所提取到的所需关键词和对应的值信息存入到数据结构中,并根据每个关键词的哈希值进行排序。若需要根据关键词从索引文件中查询对应值信息时,可用二分法进行快速查询,提高查询效率。
在一可实施方式中,将排序后数据结构存储到索引文件中,包括:
采用二进制格式将排序后数据结构存储到索引文件中。
本发明实施例中,在将数据结构储存到索引文件时,采用二进制的格式将数据结构储存到索引文件中,起到加密的效果,保证文件的安全性。
图2为本发明实施例一种文件数据的读取方法中索引文件的结构图;
图3为本发明实施例一种文件数据读取方法中索引文件的详细结构图。
如图2和图3所示,在一可实施方式中,索引文件至少包括头文件信息、一级索引和核心数据;其中,头文件信息包括一级索引地址;一级索引包括关键词的哈希值、关键词索引和值索引;核心数据包括关键词数据和值信息数据;一级索引地址指向一级索引,关键词索引指向关键词数据,值索引指向值信息数据。
本发明实施例中,索引文件信息中包括头文件信息、一级索引和核心数据;其中,头文件信息至少包括一级索引地址。一级索引至少包括哈希值、对应哈希值的关键词索引和值索引。核心数据至少包括关键词数据和值信息数据。
其中,头文件信息中的一级索引地址指向一级索引,一级索引中的关键词索引指向核心数据中的关键词,一级索引中的值信息索引指向核心数据中的值信息数据。
通过此方案,查询时,通过根据哈希值获取对应的关键词索引和值信息索引,通过关键词索引获取对应的关键词,通过值信息索引获取对应的值信息。
在一可实施方式中,一级索引还包括关键词字节长度和值信息字节长度。本发明实施例中,关键词字节长度用于存储关键词的字节长度,值信息字节长度用于存储值信息的字节长度。
进一步地,头文件信息还包括文件类型、关键词数目、文件版本号、关键词起始索引地址,用于记载文件的详细信息。
图4为本发明实施例一种文件数据的读取装置的结构示意图。
如图4所示,基于上文提供的一种文件数据的读取方法,本发明还提供一种文件数据的读取装置,装置包括:
获取模块401,用于获取文本信息;
提取模块402,用于提取文本信息中所需关键词;
判断模块403,用于判断键值对数据库中是否存在对应提取关键词的值信息;
存储模块404,用于若经判断模块判定键值对数据库中存在对应提取关键词的值信息,则将关键词和对应值信息保存到索引文件中;
加载模块405,用于将所述索引文件加载到内存中。
本发明实施例中,首先通过获取模块401获得文本信息,获取方式包括但不限于以下几种:通过网络获取文本信息、通过键盘直接录入文本信息、通过OCR(光学字符识别技术)进行文本信息的录入、通过语音识别技术进行文本信息的录入。
再通过提取模块402,提取文本中所需关键词,再将提取到的所有所需关键词形成关键词库。其中,所需关键词为同一类别的信息,例如所需关键词可以为文档中的所有地名、人名、数字等等。提取方式包括但不限制于以下几种:穷举文本信息中所有文字排列组合,将所有文字排列组合跟含有所有同一类别的词典进行匹配,若词典包含某一个文字排列组合,则该文字排列组合为所需关键词;或者通过人工智能自然语言算法提取文本中的所需关键词。
再通过判断模块403,判断键值对数据库中是否存在所提取到的关键词,其中,键值对数据库存有同一类别的所有关键词信息和对应关键词的值信息,可通过关键词信息获得对应的值信息。判断时,具体判断键值对数据库中的关键词是否包含关键词库中的所需关键词。
若通过判断模块403判定键值对数据库中关键词库中的所需关键词,再通过存储模块404将该所需关键词和对应的值信息存入到索引文件中。
进一步地,将关键词和对应值信息存入到索引文件的过程中,先将关键词和对应值信息存入到数据结构中,其中,本实施例中数据结构优选为数组或者是HashMap。在数据结构中,可根据关键词获取对应的值信息。
再计算数据结构中每个关键词的哈希值,并根据哈希值进行排序,排序方式可以是升序,也可以是降序,最后将排序后的数据结构储存到一定格式的索引文件中。
最后通过加载模块405采用二进制格式一次性加载索引文件至内存中。
通过此方案,先将大量数据存储到索引文件中,再通过索引文件一次性加载到内存中,相比较于传统方式中将大量数据逐行读取到内存而言,此方案在不失文件安全性的情况下,能加快文件读取的速度,从而缩短数据读取时间。
图5为本发明实施例一种文件数据的查询方法的实现流程示意图。如图5所示,基于上文提到的一种文件数据的读取方法,本发明还提供一种文件数据的查询方法,包括:
步骤501,获取待查关键词;
步骤502,计算待查关键词的哈希值;
步骤503,判断索引文件中是否存在待查关键词的哈希值;
步骤504,若判定索引文件中存在待查关键词的哈希值,则获取对应待查关键词的值信息。
本发明实施例中,查询时,首先通过步骤501,获得待查关键词,再通过步骤502,计算待查关键词的哈希值,然后通过步骤503判断索引文件中是否存在待查关键词的哈希值,最后通过步骤504,若判定索引文件中存在待查关键词的哈希值,则根据该哈希值查询出对应该哈希值的值信息索引,再通过值信息索引得到值信息,通过此方案,可快速根据关键词查询到对应的值信息。
在一可实施方式中,在获取对应待查关键词的值信息之前,该方法还包括:若判定索引文件中存在待查关键词的哈希值,则进一步判断待查关键词是否与索引文件中对应哈希值的关键词一致;若判定待查关键词与索引文件中对应哈希值的关键词一致,则获取对应待查关键词的值信息。
本发明实施例中,在获取对应待查关键词的值信息之前,先判断索引文件中对应该哈希值的关键词是否与待查关键词信息一致,若判定索引文件中对应该哈希值的关键词与待查关键词信息一致,则再根据该哈希值查询出对应该哈希值的值信息索引,并得到值信息索引指向的值信息,此方案提高了查询的准确性。
在一可实施方式中,通过二分法判断索引文件中是否存在待查关键词的哈希值。本发明实施例中,在判断索引文件中是否存在待查关键词的哈希值时,通过二分法进行快速查询,效率高。
通过此方案,在查询时,能够快速根据关键词查询从索引文件中获取对应的值信息,效率高。
图6为本发明实施例一种文件数据的查询装置的结构示意图。
如图6所示,基于上文提到的一种文件数据的查询方法,本发明还提供了一种文件数据的查询装置,装置包括:
获取模块601,用于获取待查关键词;
计算模块602,用于计算待查关键词的哈希值;
判断模块603,用于判断索引文件中是否存在待查关键词的哈希值;
查询模块604,用于若判断模块判定索引文件中存在待查关键词的哈希值,则获取对应待查关键词的值信息。
本发明实施例中,首先通过获取模块601获取待查关键词,再通过计算模块602计算待查关键词的哈希值,再通过判断模块603,并采取二分法查询索引文件中是否存在待查关键词的哈希值,若通过判断模块603判定索引文件中存在待查关键词的哈希值,则通过查询模块604从索引文件中获取对应待查关键词的值信息。通过此方案,可快速根据关键词查询到对应的值信息。
基于上述提供的一种文件数据的读取方法,本发明还提供一种计算机可读存储介质,存储介质中存储有计算机可执行指令,可执行指令用于:首先获得文本信息,提取文本中所需关键词,再判断键值对数据库中是否存在所提取到的关键词,若判定键值对数据库中的关键词存在所提取到的关键词,则根据关键词获取对应的值信息,再将关键词和对应值信息添加到数据结构中;计算数据结构中所有关键词的哈希值并根据哈希值大小进行排序,然后将排序后的数据结构以二进制格式存储到一定格式的索引文件中,最后将索引文件一次性加载到内存中。通过此方案,先将大量数据存储到索引文件中,再通过索引文件一次性加载到内存中,相比较于传统方式中将大量数据逐行读取到内存而言,此方案在不失文件安全性的情况下,能加快文件读取的速度,从而缩短数据读取时间。
基于上述提供的一种文件数据的查询方法,本发明还提供一种计算机可读存储介质,存储介质中存储有计算机可执行指令,指令被执行时用于:首先获取待查关键词,再计算待查关键词的哈希值,通过二分法判断索引文件中是否存在待查关键词的哈希值,若判定索引文件中存在待查关键词的哈希值,则进一步判断待查关键词是否与索引文件中对应哈希值的关键词一致;若判定待查关键词与索引文件中对应哈希值的关键词一致,则获取对应待查关键词的值信息。通过此方案,在查询时,能够快速根据关键词查询从索引文件中获取对应的值信息,效率高。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。