一种智能手机通讯录模糊搜索的方法\n技术领域\n[0001] 本发明涉及智能手机终端的信息处理技术领域,特别是通讯录联系人智能搜索。\n背景技术\n[0002] 随着智能移动设备系统的发展,人们对智能手机的需求也越来越高,包括更美化的界面,更简洁快捷的操作,更多功能的应用软件等。手机通讯录作为手机最基础的应用,在人们的日常生活中发挥巨大的作用,电话通讯、收发短信、发送邮件等过程都需要调用联系人电话簿,而目前手机操作系统自带的通讯录功能比较薄弱,尤其是在联系人搜索方面的用户体验严重滞后,造成用户发短信、打电话时定位联系人很多不便。\n[0003] 数据库全文检索是对大数据文本进行索引,在建立的索引中对要查找的单词进行搜索,定位哪些文本数据包括要搜索的单词;全文检索的全部工作就是建立索引和在索引中搜索定位,所有的工作都是围绕这两个来进行的;分词的方法基本上是二元分词法、最大匹配法和统计方法,索引的数据结构基本上采用倒排索引的结构。全文检索方法主要应用于大型数据文本,它并不适用通讯录这种结构简单、数据量较少的场景。此外,它还需要较大的存储空间,随着通讯录的更新动态维护索引,总体代价太大,使用起来不够灵活。\n[0004] 传统的通讯录搜索采用的是对输入关键词语和联系人姓名及号码进行简单字符串匹配,并没有考虑姓名的全拼、简拼及部分拼音等特殊搜索。此外,字符串的子序列是从最初序列通过去除某些元素但不破坏余下元素的相对位置而形成的新序列,它是描述两个字符串相似匹配的常用标准,以形式化的方式来说,给定一个序列X=
,另一个序列Z=是X的子序列,如果存在X的一个严格递增下表序列,使得对所有的j=1,2,…,k。传统的子序列匹配算法没有考虑到拼音的声母和韵母,没有对拼音进行动态分词匹配,因此需要进行一定的改造。\n[0005] 拇指键盘的简单易用性吸引着大量智能手机用户,而提供拇指键盘的智能查询是用户必不可少的需求,因此如何给人们提供更便捷、更高效的通讯录搜索操作方法和用户体验是亟待解决的问题。\n发明内容\n[0006] 本发明针对上述问题,提供一种智能手机通讯录模糊搜索的方法,目的是便捷、高效的通讯录搜索操作方法,将支持对联系人姓名(全拼、简拼、部分拼音、拇指键盘数字序列)、手机号码、邮箱等关键属性的模糊匹配和定位,给用户提供更快、更好的用户体验。\n[0007] 为了实现上述目的,本发明采用以下技术方案:\n[0008] 一种智能手机通讯录模糊搜索的方法,包括以下步骤:\n[0009] 1)通过开放接口读取本机通讯录联系人数据,剔除冗余数据,只留取关键信息,关键信息包括联系人姓名、手机号码和邮箱;\n[0010] 2)通过信息预处理器对所有联系人信息进行预处理,对于姓名中的中文,通过查汉字编码表提取拼音,多音字则对应多条记录,同时将拼音转码成拇指键盘对应的数字序列,将上述所有的记录写入内存和设计好的缓存器中;\n[0011] 3)对输入的搜索关键字key,首先查询缓存器是否已有对应记录,若命中则直接定位,否则全局搜索通讯录,将关键字key分为三种类型:a)含有中文字符;b)不含中文字符,含有英文字母和数字;c)只包含纯数字;\n[0012] 4)对于给定的关键字key通过搜索匹配器进行匹配搜索,若关键字属于b类别,则匹配对象为联系人姓名拼音;若属于c类别,则匹配对象为拇指键盘数字序列;搜索匹配器的具体匹配规则:将姓名拼音转换为一个拼音数组,遍历关键字的每一个字母,将字母与拼音单词依次匹配,若当前字母匹配,则继续匹配key与当前单词下一个字母或下一个单词的第一个字母,若所有的关键字字母都有对应的匹配,则匹配成功,否则匹配失败;\n[0013] 5)通过步骤3)、4)得到所有与关键字key匹配的联系人,通过加权排序器按照匹配优先级进行加权排序并输出。\n[0014] 进一步,所述步骤3)中,对于a匹配对象为联系人姓名;对于b匹配对象为联系人姓名拼音和邮箱;对于c匹配对象为联系人电话号码和姓名对应拇指键盘数字序列;对于b、c应采用步骤4)中的拼音模糊匹配算法对拼音编码和拇指键盘数字序列进行模糊匹配,搜索时,首先在缓存器中查询,若命中或存在当前关键字前缀,则在原结果中进行二次搜索。\n[0015] 进一步,所述步骤4)中,采用了改造后的字符串子序列匹配算法,具体算法思想描述为:对给定的关键字key和姓名拼音pinyin,先将pinyin以空格符分隔成数组pinyin[N],定义s为开始匹配的拼音数组下标,k为当前需要匹配的key字母下标,i为当前匹配的拼音单词下标,j为当前单词的字母下标;\n[0016] a.初始化s=0,k=0,i=s,j=0,即从关键字第一个字母与拼音第一个单词的第一个字母开始匹配;\n[0017] b.判断k==key.length,如果true,则匹配成功,算法终止;如果false,则转c;\n[0018] c.判断key[k]==pinyin[i][j],如果true转d,如果false转f;\n[0019] d.k++,j++,即尝试匹配关键字下一个字母与当前拼音单词下一个字母;\n[0020] e.判断j部分匹配;全拼>简拼>部分拼音;姓名匹配>号码匹配>邮箱匹配。\n[0027] 进一步,对已搜索到的关键字key搜索结果记录,应存入缓存器中,下次搜索新的关键字时,首先应查询缓存器,若关键字命中或是存在关键字前缀时,直接在缓存的结果记录之上进行二次搜索。\n[0028] 本发明与现有技术相比,具有如下有益效果:\n[0029] 本发明所提供的方法实用简单、操作便捷、查找高效,它支持中文汉字、电话号码、邮箱来搜索联系人;支持按姓名首字母、全拼、部分拼音来模糊搜索联系人。\n[0030] 进一步的,支持拇指键盘输入数字直接反查拼音模糊搜索联系人。\n[0031] 进一步的,通过改造后的字符串子序列匹配算法可以对搜索联系人结果给出具体匹配原因。\n[0032] 进一步的,支持拇指键盘输入数字直接反查拼音模糊搜索联系人。\n[0033] 进一步的,对搜索结果进行记录缓存,二次搜索效率较高。\n附图说明\n[0034] 图1为通讯录模糊搜索的结构示意图。\n[0035] 图2为通过关键字模糊搜索通讯录联系人的流程示意图。\n[0036] 图3为改造后的字符串子序列匹配算法流程示意图。\n具体实施方式\n[0037] 下面结合实施例和附图来对发明进行详细描述。\n[0038] 本发明给出的是一种智能手机通讯录模糊搜索联系人的方法,设计了如图1所示的搜索结构示意图,具体包括:\n[0039] 信息预处理器:获取并对联系人信息预处理,过滤冗余数据,对姓名进行拼音编码等。\n[0040] 缓存器:对预处理过的联系人信息进行缓存,同时对关键字-搜索结果进行缓存。\n[0041] 搜索匹配器:对给定搜索关键字,根据其类别匹配联系人所有关键信息,它调用了改造过的子序列匹配算法。\n[0042] 加权排序器:对搜索结果根据自定义的优先级规则,进行全局加权排序输出。\n[0043] 如图2所示的关键字模糊搜索通讯录联系人的流程示意图可以看出本发明一个实施例中的搜索方法主要包括以下流程:\n[0044] 1)通过手机操作系统提供的接口,读取本机通讯录联系人数据,剔除冗余数据,只留取联系人姓名、手机号码、邮箱等关键信息。\n[0045] 2)对所有通讯录联系人的个人信息进行预处理,特别地,对联系人姓名通过查汉字拼音编码表提取拼音,每个汉字拼音之间用空格分隔,如果姓名中存在多音字,转码成多条记录,同时把拼音翻译成拇指键盘对应的数字序列,对上述处理过的联系人信息维护在内存中,同时备份到已设计好的缓存器中,下次搜索可直接查询缓存器中记录。\n[0046] 表1为拼音字母对应的拇指键盘数字转码表。\n[0047] 3)\n[0048]\n拼音字母 拇指键盘数字\n \na,b,c 2\nd,e,f 3\ng,h,i 4\nj,k,l 5\nm,n,o 6\np,q,r,s 7\nt,u,v 8\nx,y,z 9\n[0049] 4)搜索通讯录联系人时,输入搜索关键字,将关键字分为三种类别考虑:a)含有中文字符;b)不含中文字符,包含英文字母;c)只包含纯数字。对于a),关键字包含中文字符,而联系人信息中只有未经处理过的原始姓名字段中可能含有中文,因此只需将关键字与联系人姓名字符串匹配即可;对于b),关键字包含英文字母,可能符合的字段应为联系人姓名的拼音或者邮箱,对于拼音情形,考虑为联系人姓名的全拼、简拼、部分拼音的一种,可采用步骤四中的关键字和姓名全拼的匹配算法处理,如果是邮箱,则只需简单的字符串匹配即可;对于c),关键字只包含纯数字,应考虑手机号码和拇指键盘数字序列两种情形,前者只需要对关键字与联系人号码进行子字符串匹配,后者则采用步骤四的关键字和拇指键盘数字序列的匹配算法。\n[0050] 5)对给定的关键字key和姓名拼音pinyin(纯数字和拇指键盘数字序列匹配情形类似),先将姓名拼音以空格符分隔成数组pinyin[N],匹配key和pinyin[N].具体改造过的拼音匹配算法,即改造后的字符串子序列匹配算法流程如图3所示,具体如下:定义s为开始匹配的拼音数组下标,k为当前需要匹配的key字母下标,i为当前匹配的拼音单词下标,j为当前单词的字母下标。\n[0051] a.初始化s=0,k=0,i=s,j=0,即从第一个关键字字母与拼音第一个单词的第一个字母开始匹配。\n[0052] b.判断k==key.length,如果true,则匹配成功,算法终止;如果false,则转c。\n[0053] c.判断key[k]==pinyin[i][j],如果true转d,如果false转f。\n[0054] d.k++,j++,即尝试匹配关键字下一个字母与当前拼音单词下一个字母。\n[0055] e.判断j部分匹配;全拼>简拼>部分拼音;姓名匹配>号码匹配>邮箱。\n[0061] 为了提高搜索效率,我们将搜索关键字key搜索结果的记录存入缓存器中,这样下次搜索新的关键字时,可以先在缓存器中查询,如关键字命中或者存在前缀关键字时,可在缓存的结果记录之上进行二次搜索,这将大大提高搜索效率。\n[0062] 本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。