一种连续字符与模糊字符的检索系统及方法与流程

文档序号:12271449阅读:355来源:国知局
一种连续字符与模糊字符的检索系统及方法与流程

本发明涉及字符检索技术领域,尤其涉及一种连续字符与模糊字符的检索系统及方法。



背景技术:

车载蓝牙电话本中,用户通讯录的姓名可能为汉字、ASCII码字符、或既包含汉字又包含ASCII码字符,还有可能为其他文字,用户希望输入相应字符即可根据通讯录的姓名检索到想要的通讯录,如:通讯录的姓名为“张三”,用户希望输入拼音缩写“zs”或者全称“zhangsan”或者混搭“zhangs”,“zsan”即可检索到“张三”的通讯录信息;又如通讯录的姓名为英文名“apple”,用户希望输入“apple”,“app”就能检索到“apple”的通讯录信息;再如用户名“张Love狗”,用户希望输入“z”或者“love”就能检索到“张Love狗”的通讯录信息。

汉字数量众多,且存在多音字。现有技术中,车载linux原生的平台库没有汉字转拼音相应的API(Application Programming Interface,应用程序编程接口),微软的windows,谷歌的android有相应的汉字转拼音API,但是均不支持汉字中的多音字。android的HanziToPinyin.java中,汉字转成的拼音有些不够准确;并且均不支持连续字符与模糊字符的检索。



技术实现要素:

本发明提供一种连续字符与模糊字符的检索系统及方法,通过使用KMP字符串模式匹配算法和使用长串中逐一取出一个Unicode码与短串匹配,对连续字符与模糊字符进行匹配,解决了连续字符与模糊字符的检索问题,还支持汉字中多音字的准确检索。

为了解决上述技术问题,本发明所采取的技术方案为:

本发明一方面提供一种连续字符与模糊字符的检索系统,包括:

连续字符串模式匹配模块,使用KMP字符串模式匹配算法将短串连续的字符在长串中匹配;当所述连续字符串模式匹配不成功,还包括:

模糊字符匹配模块,用于从长串中逐一取出一个Unicode码对应的汉字字符或ASCII字符与短串匹配,设置为当短串中所有字符在长串中都有相应匹配的子集时,匹配成功,最终获得检索集合项。

进一步地,在所述模糊字符匹配模块中,当从长串中取出的一个Unicode码对应的字符为汉字字符时,设置为先从汉字拼音映射表中查找所述汉字的拼音,再将所述汉字拼音映射表中查找的拼音的首字母与短串中的一个字符匹配,或者整个拼音字符与短串中的连续字符子串匹配,若匹配成功,则所述Unicode码被匹配。

又进一步地,在所述汉字拼音映射表中,汉字的拼音按汉字Unicode码的排列顺序依次存储在一维数组中;所述汉字拼音映射表中存储的拼音包括多音字的拼音字符组,所述拼音字符组包括对应多音字的各拼音字符。

还进一步地,在所述模糊字符匹配模块中,当从长串中取出的一个Unicode码对应的字符为汉字的多音字时,设置为先从汉字拼音映射表中查找所述多音字的拼音字符组,再将所述汉字拼音映射表中查找的各拼音字符的首字母与短串中的一个字符匹配,或者整个拼音字符与短串中的连续字符子串匹配,若匹配成功,则所述Unicode码被匹配。

更进一步地,在所述模糊字符匹配模块中,当从长串中取出的一个Unicode码为对应的ASCII码字符时,通过数值比较与短串的一个字符匹配。

本发明另一方面提供一种连续字符与模糊字符的检索方法,包括汉字拼音映射表建立步骤和双重匹配步骤;

所述双重匹配步骤包括:第一重连续字符串模式匹配步骤和第二重模糊字符匹配步骤;

所述第一重连续字符串模式匹配步骤包括:使用KMP字符串模式匹配算法将短串连续的字符在长串中匹配;当所述第一重连续字符串模式匹配不成功,则进行第二重模糊字符匹配步骤;

所述第二重模糊字符匹配步骤包括:从长串中逐一取出一个Unicode码对应的汉字字符或ASCII字符与短串匹配,设置为当短串中所有字符在长串中都有相应匹配的子集时,匹配成功。

进一步地,在所述第二重模糊字符匹配步骤中,当从长串中取出的一个Unicode码对应的字符为汉字字符时,设置为先从汉字拼音映射表中查找所述汉字的拼音,再将所述汉字拼音映射表中查找的拼音的首字母与短串中的一个字符匹配,或者整个拼音字符与短串中的连续字符子串匹配,若匹配成功,则所述Unicode码被匹配。

又进一步地,在汉字拼音映射表建立步骤中,汉字的拼音按汉字Unicode码的排列顺序依次存储在一维数组中;所述汉字拼音映射表中存储的拼音包括多音字的拼音字符组,所述拼音字符组包括对应多音字的各拼音字符。

还进一步地,在所述第二重模糊字符匹配步骤中,当从长串中取出的一个Unicode码对应的字符为汉字的多音字时,设置为先从汉字拼音映射表中查找所述多音字的拼音字符组,再将所述汉字拼音映射表中查找的各拼音字符的首字母与短串中的一个字符匹配,或者整个拼音字符与短串中的连续字符子串匹配,若匹配成功,则所述Unicode码被匹配。

更进一步地,在所述第二重模糊字符匹配步骤中,当从长串中取出的一个Unicode码为对应的ASCII码字符时,通过数值比较与短串的一个字符匹配。

本发明提供一种连续字符与模糊字符的检索系统及方法,通过建立汉字拼音映射表,将生活中常用到的汉字的拼音按汉字Unicode码的排列顺序依次存储在一维数组中,还通过第一重连续字符串模式匹配步骤的KMP字符串模式匹配算法将短串连续的字符在长串中匹配;当所述第一重连续字符串模式匹配不成功,采取第二重模糊字符匹配步骤,从长串中逐一取出一个Unicode码与短串匹配,与现有技术相比,本发明实现了连续字符与模糊字符的匹配检索,实现了汉字的多音字检索,其中第一重连续字符串模式匹配还适用多国文字的检索,第二重模糊字符匹配步骤适用于汉字或汉字与ASCII码字符组合的检索;所述汉字拼音映射表具有较好的移植性,可跨平台使用,具有检索速度快、效率高的有益效果。

附图说明

图1是本发明提供的连续字符与模糊字符的检索系统结构示意图;

图2是本发明汉字拼音映射表的一维数组中存储的部分数据;

图3是本发明双重匹配步骤的流程图;

图4是本发明模糊字符匹配的第一示意图;

图5是本发明模糊字符匹配的第二示意图;

图6是本发明模糊字符匹配的第三示意图;

图7是本发明模糊字符匹配的第四示意图;

具体实施方式

下面结合附图具体阐明本发明的实施方式,附图仅供参考和说明使用,不构成对本发明专利保护范围的限制。

本发明实施例一方面提供一种连续字符与模糊字符的检索系统,如图1所示,为本发明提供的连续字符与模糊字符的检索系统结构示意图,包括:

字符串模式匹配模块,使用KMP字符串模式匹配算法将短串连续的字符在长串中匹配;需要说明的是,字符串模式匹配模块只匹配连续的字符串,即短串的字符串为长串字符的子集,如英文名“apple”,用户输入“apple”,“app”“ple”“a”等连续的字符串都能得到检索项“apple”,还需要说明的是,用户检索时输入不区分英文字母的大小写,即用户输入“APP”也能检索到“apple”;又如长串为“邓A国”,用户输入的短串为长串的子集“邓A”或“邓a”都能检索到“邓A国”;当所述字符串模式匹配模块匹配不成功时,还包括:

模糊字符匹配模块,用于从长串中逐一取出一个Unicode码对应的汉字字符或ASCII字符与短串匹配,设置为当短串中所有字符在长串中都有相应匹配的子集时,匹配成功,如图4所示,用户输入DL,首先在字符串模式匹配模块中进行匹配,未匹配到姓名含DL的通讯录或检索到的通讯录不符合用户的检索需求时,进入模糊字符匹配模块进行匹配,从通讯录中依次取出一个长串如取出“邓彬乐”,再在长串中逐一取出一个Unicode码与短串匹配,先取出汉字“邓”的Unicode码对应的汉字拼音映射表中查找的拼音字符“DENG”与短串的“D”进行匹配,匹配成功,再从该长串中取下一个Unicode码与短串匹配,即取出“彬”的Unicode码对应的汉字拼音映射表中查找的拼音字符“BIN”与短串的“L”进行匹配,匹配不成功,再从该长串中取下一个Unicode码与短串匹配,即取出“乐”的Unicode码对应的汉字拼音映射表中查找的拼音字符“LE YUE”与短串的“L”进行匹配,匹配成功,因此用户输入“DL”时,检索集合项中将出现“邓彬乐”,再一次对电话簿中的其他通讯录进行检索,直到用户检索到其需要的通讯录为止;最终获得检索集合项。

本实施例中,还对所述检索项集合中每一项进行加权处理,根据权重进行排序,使得越接近用户检索要求的通讯录排在越前面,加权采用长串中被匹配的子集在长串中的索引位置的权相加的法则,索引越是靠前,权重就越高,且第i位的权重等于i+1,i+2~i+n之和。

本实施例中,在所述模糊字符匹配模块中,当从长串中取出的一个Unicode码对应的字符为汉字字符时,设置为先从汉字拼音映射表中查找所述汉字的拼音,再将所述汉字拼音映射表中查找的拼音的首字母与短串中的一个字符匹配,或者整个拼音字符与短串中的连续字符子串匹配,若匹配成功,则所述Unicode码被匹配。

优选地,如图2所示,在所述汉字拼音映射表中,汉字的拼音按汉字Unicode码的排列顺序依次存储在一维数组中;将汉字Unicode码最小的的汉字对应的拼音存储在一维数组的第一项,将汉字Unicode码第二小的汉字对应的拼音存储在一维数组的第二项,以此类推,直到将汉字Unicode码第大的汉字对应的拼音存储在一维数组的最后一项;如常用的20902个汉字集合最小的Unicode码是0x4e00,最大的是0x4e00+20901,Unicode码0x4e00对应汉字的拼音放在数组的第一项,Unicode码0x4e00+20901对应汉字的拼音放在数组的最后一项。由此按顺序排列,后续查找时只需要通过汉字的Unicode码减去最小Unicode码0x4e00便得到对应的一维数组下标i,通过一维数组的下标i便可以快速找到汉字的拼音。所述汉字拼音映射表中存储的拼音字符包括多音字的拼音字符组,所述拼音字符组包括对应多音字的各拼音字符。

优选地,在所述模糊字符匹配模块中,当从长串中取出的一个Unicode码对应的字符为汉字的多音字时,设置为先从汉字拼音映射表中查找所述多音字的拼音字符组,再将所述汉字拼音映射表中查找的各拼音字符的首字母与短串中的一个字符匹配,或者整个拼音字符与短串中的连续字符子串匹配,若匹配成功,则所述Unicode码被匹配。如图4、图5、图6所示的从长串中取出的Unicode码对应的字符为多音字“乐”时,所述拼音字符组“LE YUE”中的各拼音字符的首字母与短串匹配或者整个拼音字符与短串匹配。

优选地,在所述模糊字符匹配模块中,当从长串中取出的Unicode码为对应的ASCII码字符时,通过数值比较与短串的一个字符匹配,如图7所示,从长串中取出的Unicode码为对应的ASCII码字符“A”时,通过数值比较与短串“A”匹配。

本发明另一方面提供一种连续字符与模糊字符的检索方法,包括汉字拼音映射表建立步骤和双重匹配步骤;

所述双重匹配步骤包括:第一重连续字符串模式匹配步骤和第二重模糊字符匹配步骤;

所述双重匹配步骤包括:第一重连续字符串模式匹配步骤和第二重模糊字符匹配步骤;

所述第一重连续字符串模式匹配步骤包括:使用KMP字符串模式匹配算法将短串连续的字符在长串中匹配;需要说明的是,字符串模式匹配模块只匹配连续的字符串,即短串的字符串为长串字符的子集,如英文名“apple”,用户输入“apple”,“app”“ple”“a”等连续的字符串都能得到检索项“apple”,还需要说明的是,用户检索时输入不区分英文字母的大小写,即用户输入“APP”也能检索到“apple”;又如长串为“邓A国”,用户输入的短串为长串的子集“邓A”或“邓a”都能检索到“邓A国”;当所述字符匹配模块匹配不成功,还包括:如图3所示,当所述一重字符串模式匹配不成功,则进行第二重模糊字符匹配步骤;

所述第二重模糊字符匹配步骤包括:从长串中逐一取出一个Unicode码对应的汉字字符或ASCII字符与短串匹配,设置为当短串中所有字符在长串中都有相应匹配的子集时,匹配成功。如图4所示,用户输入DL,首先在字符串模式匹配模块中进行匹配,未匹配到姓名含DL的通讯录或检索到的通讯录不符合用户的检索需求时,进入模糊字符匹配模块进行匹配,从通讯录中依次取出一个长串如取出“邓彬乐”,再在长串中逐一取出一个Unicode码与短串匹配,先取出汉字“邓”的Unicode码对应的汉字拼音映射表中查找的拼音字符“DENG”与短串的“D”进行匹配,匹配成功,再从该长串中取下一个Unicode码与短串匹配,即取出“彬”的Unicode码对应的汉字拼音映射表中查找的拼音字符“BIN”与短串的“L”进行匹配,匹配不成功,再从该长串中取下一个Unicode码与短串匹配,即取出“乐”的Unicode码对应的汉字拼音映射表中查找的拼音字符“LEYUE”与短串的“L”进行匹配,匹配成功,因此用户输入“DL”时,检索集合项中将出现“邓彬乐”,再一次对电话簿中的其他通讯录进行检索,直到用户检索到其需要的通讯录为止;需要说明的是,所述第二重模糊字符匹配步骤中,用户输入“乐彬”检索集合项中也将出现“邓彬乐”

本实施例中,在所述第二重模糊字符匹配步骤中,当从长串中取出的一个Unicode码对应的字符为汉字字符时,设置为先从汉字拼音映射表中查找所述汉字的拼音,再将所述汉字拼音映射表中查找的拼音的首字母与短串中的一个字符匹配,或者整个拼音字符与短串中的连续字符子串匹配,若匹配成功,则所述Unicode码被匹配。

优选地,如图2所示,在汉字拼音映射表建立步骤中,汉字的拼音按汉字Unicode码的排列顺序依次存储在一维数组中;将汉字Unicode码最小的的汉字对应的拼音存储在一维数组的第一项,将汉字Unicode码第二小的汉字对应的拼音存储在一维数组的第二项,以此类推,直到将汉字Unicode码第大的汉字对应的拼音存储在一维数组的最后一项;如常用的20902个汉字集合最小的Unicode码是0x4e00,最大的是0x4e00+20901,Unicode码0x4e00对应汉字的拼音放在数组的第一项,Unicode码0x4e00+20901对应汉字的拼音放在数组的最后一项。由此按顺序排列,后续查找时只需要通过汉字的Unicode码减去最小Unicode码0x4e00便得到对应的一维数组下标i,通过一维数组的下标i便可以快速找到汉字的拼音。所述汉字拼音映射表中存储的拼音字符包括多音字的拼音字符组,所述拼音字符组包括对应多音字的各拼音字符。

优选地,当从长串中取出的一个Unicode码对应的字符为汉字的多音字时,设置为先从汉字拼音映射表中查找所述多音字的拼音字符组,再将所述汉字拼音映射表中查找的各拼音字符的首字母与短串中的一个字符匹配,或者整个拼音字符与短串中的连续字符子串匹配,若匹配成功,则所述Unicode码被匹配。如图4、图5、图6所示的从长串中取出的Unicode码对应的字符为多音字“乐”时,所述拼音字符组“LE YUE”中的各拼音字符的首字母与短串匹配或者整个拼音字符与短串匹配。

优选地,在所述第二重模糊字符匹配步骤中,当从长串中取出的Unicode码为对应的ASCII码字符时,通过数值比较与短串的一个字符匹配,如图7所示,从长串中取出的Unicode码为对应的ASCII码字符“A”时,通过数值比较与短串“A”匹配。

本发明实现了连续字符与模糊字符的匹配检索,实现了汉字的多音字检索,其中第一重连续字符串模式匹配还适用多国文字的检索,第二重模糊字符匹配步骤适合汉字或汉字与ASCII码字符组合的模糊检索;所述汉字拼音映射表具有较好的移植性,可跨平台使用,在测试环境windows7的Windows版本、Intel(R)Core(TM)i5-6500CPU@3.20GHz的处理器、2GB内存(RAM)下测试,10000条通讯录的检索时间仅为53ms;因此,本发明还具有检索速度快、效率高的有益效果。

以上所揭露的仅为本发明的较佳实施例,不能以此来限定本发明的权利保护范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1