一种字符数据的检索方法技术

技术编号:2920599 阅读:207 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种字符数据的检索方法。包括:1)提取源数据库中字符数据的前两位字母组合作为索引项建立索引;2)记录每个索引项所对应的字符数据的存储地址;3)加载所述索引到内存;以及,4)根据输入关键字的前两位字母加载该字母组合索引项对应的字符数据到内存;5)遍历内存中的字符数据,输出与关键字匹配的数据。本发明专利技术能够快速的反馈与关键字相似的字符数据,并且不仅降低了内存占有量,也具有较高的匹配速度。

【技术实现步骤摘要】

本专利技术涉及一种数据检索技术,尤其是字符类数据的检索方法。
技术介绍
用户在进行词典类数据的查询操作中,用户往往出现不能十分确定查询关键字的具体拼写的情况;或者,用户需要查询具有部分相同字符的数据。针对以上两种情况,可以依据用户输入的不确定的字符串,从源数据中查找出一系列与之相似的数据,供用户参考,同时也支持包括通配符的关键字的查找。在关键字中加入通配符“?”或“*”以查找所有与之预期相同或者相近的字符数据。其中通配符“?”匹配文件名中的单个字符,而通配符“*”匹配零个或多个字符。例如data?.dat的模式所能查找到的文件包括data1.dat或者dataN.dat;当使用′*′字符代替′?′字符时(即data*.dat的模式),则会扩大检索出的文件范围,则下列名称的文件将出现在查询结果中data12222.dat或者data12XF.dat等。如本领域技术人员所知,关键字的查找方法是对源数据中所有数据逐一进行比对。所述源数据通常是保存在磁盘上的单词索引文件。由于对磁盘操作的速度较慢,并且逐一进行对比的算法较为繁琐,因而,现有技术不能提供更高的检索速度。现有技术的一种改进方法是先将磁盘文件中的数据读入内存,进而在内存中进行字符匹配的操作,但是由于不同检索应用中的索引文件大小不同,尤其在索引文件较大的情况下,将其全部读入内存会占用相当部分的内存空间,进一步由于该改进方法仅改变了匹配操作的环境,而依然沿用了现有技术中较为繁琐的字符匹配算法,因而所述对现有技术的改进并没有明显的提高字符查找的速度。
技术实现思路
本专利技术的目的是提供一种字符数据的查找方法,该方法能够快速的反馈与关键字相似的字符数据。为解决上述技术问题,本专利技术的目的是通过以下技术方案实现的1)提取源数据库中字符数据的前两位字母组合作为索引项建立索引;2)记录每个索引项所对应的字符数据的存储地址;3)加载所述索引到内存;以及,4)根据输入关键字的前两位字母加载该字母组合索引项对应的字符数据到内存;5)遍历内存中的字符数据,输出与关键字匹配的数据。在上述方法基础上,1)中进一步包括建立一位字母组合的索引项,该索引项对应于以该字母为首字母,且前两位为字母与非字母组合的字符数据;以及,4)之前还包括查找索引中是否有与输入关键字前两位字符相匹配的索引项,若有则进行4),否则加载与输入关键字首位字符相匹配的索引项到内存。上述方法中,3)中进一步将索引保存到哈希表。所述源数据库中字符数据按字符顺序进行排列;则2)具体为记录确定的索引项所对应第一个字符数据的地址,以及进一步记录包括确定的索引项所对应字符数据的数量。本专利技术所述非字母字符包括空格符、数字、分隔符等。以上技术方案可以看出,本专利技术是,该方法中,在设计索引文件的时候建立了二级索引,及将所有字符数据最前面的两个字母作为二级索引项,并记录每二级索引项所对应单词的存储位置;并且,在每次查词操作的时候仅根据查找关键字的前两位字符加载相应的字符数据到内存,进而在该字符数据的集合范围内进一步遍历进行匹配操作等。因而,本专利技术具有查词速度快的优点。进一步,本专利技术采用哈希表管理二级索引的信息,即在每次程序运行时,将所述二级索引与索引项下字符数据的存储位置读入哈希表,以便于之后的查找。每次对源模型的查找只需要对用户输入的关键字进行分析,剥离出二级索引,再对哈希表进行查找从而找到相对索引项的偏移并将从此偏移开始的单词集合块读入内存从而进行查找和匹配。这样不仅进一步降低了内存占有量,也提升了匹配速度。附图说明图1为二级索引结构图;图2为本专利技术实施例流程图;图3为目标模型与源模型匹配流程图。具体实施例方式本专利技术涉及字符数据的检索方法。其中包括以下概念。源数据指所有被搜索的数据。如在电子词典中,所述源数据即指所有单词或词组的集合,这些单词或词组通常以名称为单词索引的磁盘文件的形式存在。源模型将用户输入的欲查找的字符串称为源模型(Source Pattern),亦为搜索关键字,源模型中可包括特殊的字符串。数据集中于之比对的字符串成为“目标模型(Target Pattern)”目标模型与用户所输入的字符串相似的单词集合称为目标模型,目标模型可以理解为依据用户的输入,从源数据划分出的小范围数据集合。以下说明本专利技术的具体实施方式。本专利技术优选实施例的核心在于在源数据中建立二级索引,建立二级索引文件,即提取源数据库中字符数据的前两位字母组合作为索引项建立索引和建立一位字母组合的索引项,该索引项对应于以该字母为首字母,且前两位为字母与非字母组合的字符数据;在内存中,采用哈希表保存所述二级索引文件,即所述索引项与其所对应的字符数据的对应关系;以及,查找索引中是否有与输入关键字前两位字符相匹配的索引项,若有则加载该字母组合索引项对应的字符数据到内存;否则加载与输入关键字首位字符相匹配的索引项到内存;最后,遍历内存中的字符数据,输出与关键字匹配的数据。由上可知,本专利技术的核心之一在于建立二级索引。图1为本专利技术二级索引结构图,参照该图具体说明二级索引的建立。本专利技术所建立的二级索引是将源数据中所有字符数据最前面的两个字母做成二级索引;以及,进一步建立一位字母的索引项,该一位字母的索引项对应于以该字母为首字母,且前两位为字母与非字母组合的字符数据。并记录以下信息二级索引项;该二级索引项所对应源数据中第一个字符数据在索引文件中的偏移(P);该二级索引项所对应源数据中第一个字符数据在索引文件中的偏移与以下一个二级索引项所对应源数据中的第一个字符数据在索引文件中的偏移之差(Pc)。将二级索引项、所述字符数据的偏移(P)以及所述偏移之差(Pc)这三个数据组成一个元组(tuple),附加在索引文件前面,一个元组结构是(二级索引,P,Pc)。如图,二级索引项ab的元组结构为ab:323:745,其中以ab开头的第一个单词是abacus,这个单词在索引文件中的偏移是323,其中以ac开头的第一个单词是academic,这个单词在索引文件中的偏移是1068,之差为745,说明以ab开头的单词共有745个。进一步如图1所示,其中二级索引项a的元组结构为a:0:323,该索引项所对应的源数据为以a为首字母的词组或字符组合,如图,第一个字符数据为a case in point,该词组在索引文件中的偏移为0,且索引项a下的最后一个字符数据为A.M.,其偏移为322,则索引项a对应源数据的字符数据数为323。图2为本专利技术实施例流程图,参照该图说明本专利技术的实现方式。步骤21在现有源数据的索引文件基础上,创建二级索引,将二级索引和偏移等记录在元组中,把所有二级索引的元组附加到索引文件前面;所述二级索引的建立方法参照上文说明;步骤22程序启动后,加载索引文件前面的所有元组数据到内存中,并保存到哈希表中;所述哈希表是一种数据结构,其基本思想是根据当前待查找数据的特征,以记录关键字为自变量,设计一个function,该函数对关键字进行转换后,其解释结果为待查的地址。具体的,哈希表根据关键值码直接进行访问,即通过把关键值码映射到表中一个位置来访问记录,以加快查找的速度;所述映射函数叫做哈希函数,例如F(a)=b,其中F()为哈希函数,a表示键值,b为返回值。相对于树型结构、列表结构本文档来自技高网...

【技术保护点】
一种字符数据检索方法,其特征在于:1)提取源数据库中字符数据的前两位字母组合作为索引项建立索引;2)记录每个索引项所对应的字符数据的存储地址;3)加载所述索引到内存;以及,4)根据输入关键字的前两位字母加载该 字母组合索引项对应的字符数据到内存;5)遍历内存中的字符数据,输出与关键字匹配的数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈亮林剑峰
申请(专利权)人:北京金山软件有限公司
类型:发明
国别省市:11[中国|北京]

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

1