模糊查找的方法和装置制造方法及图纸

技术编号:10170393 阅读:512 留言:0更新日期:2014-07-02 12:03
本发明专利技术公开了一种模糊查找的方法和装置,属于模糊查找技术领域。所述方法包括:预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组项;按照预设的规则对构造得到的所有后缀数组中的各个后缀数组项进行排序;当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,将与查找得到的后缀数组对应的联系人作为查找的结果。所述装置包括:构造模块、排序模块和查找模块。本发明专利技术缩短了查找联系人的时间,提高了查找联系人的效率,增强了用户的体验。

【技术实现步骤摘要】
模糊查找的方法和装置
本专利技术涉及模糊查找
,特别涉及一种模糊查找的方法和装置。
技术介绍
目前,IM(InstantMessenger,即时通讯)客户端一般都提供模糊查找联系人的功能。模糊查找是指查找时不必以搜索目标的全称为关键词进行查找,而是可以以搜索目标的部分名称为关键词进行查找的过程。如何实现快速模糊匹配联系人对用户而言至关重要,尤其是当用户的IM联系人数量越来越大时,会极大地影响用户的体验。现有的模糊查找联系人的方案是:根据关键词对联系人列表进行逐字符的多次遍历。例如,某用户IM客户端的联系人列表中有N个联系人,用户输入的模糊关键词为“王*明”,其中,*表示该位置处可以为任何字符,则模糊查找的过程是首先在N个联系人中遍历找到包含字符“王”的联系人,然后再重新对N个联系人进行遍历找到包含字符“明”的联系人,根据两次遍历的结果综合得到与关键词“王*明”匹配的联系人。但是上述方案具有如下缺陷:每次查找都需要对所有的联系人进行遍历,非常耗时,当用户联系人较多、联系人名称较长或查找的关键词较长时,查找的速度非常慢,影响了用户的体验。
技术实现思路
为了提高查找联系人的速度,本专利技术提供了一种模糊查找的方法和装置。所述技术方案如下:一方面,本专利技术提供了一种模糊查找的方法,所述方法包括:预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组项;按照预设的规则对构造得到的所有后缀数组中的各个后缀数组项进行排序;当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,将与查找得到的后缀数组对应的联系人作为查找的结果。其中,预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组项,包括:每当向联系人列表中添加一个联系人时,从所述联系人的最后一个字符开始,按照字符从后向前的顺序每次获取一个字符;如果获取的字符为所述联系人的最后一个字符,则将所述最后一个字符作为后缀数组项;如果获取的字符不是所述联系人的最后一个字符,则将所述联系人中从获取的所述字符至最后一个字符的字符组合作为后缀数组项;直到当前获取的字符为所述联系人中的第一个字符为止,将得到的所有后缀数组项组成所述联系人的后缀数组。其中,当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,包括:当接收到一个查找联系人的关键词时,按照接收字符的顺序,将接收到的所述关键词中的各个字符依次作为二分查找的索引;如果所述索引是首个接收的字符,则在已排序的所有后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;如果所述索引不是首个接收的字符,则按照预设的规则对上次查找的结果中的各个后缀数组项进行排序,然后在已排序的上次查找的结果中的各个后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;直到所述索引为最后一个接收的字符,将最后一次查找结果中的后缀数组作为与所述关键词匹配的后缀数组。优选地,所述预设的规则为按首字符的拼音首字母进行排序。进一步地,当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,包括:当接收到一个查找联系人的关键词时,根据所述关键词中每一个字符的拼音首字母在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组。另一方面,本专利技术还提供了一种模糊查找的装置,所述装置包括:构造模块,用于预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组项;排序模块,用于按照预设的规则对所述构造模块构造得到的所有后缀数组中的各个后缀数组项进行排序;查找模块,用于当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,将与查找得到的后缀数组对应的联系人作为查找的结果。其中,所述构造模块用于:每当向联系人列表中添加一个联系人时,从所述联系人的最后一个字符开始,按照字符从后向前的顺序每次获取一个字符;如果获取的字符为所述联系人的最后一个字符,则将所述最后一个字符作为后缀数组项;如果获取的字符不是所述联系人的最后一个字符,则将所述联系人中从获取的所述字符至最后一个字符的字符组合作为后缀数组项;直到当前获取的字符为所述联系人中的第一个字符为止,将得到的所有后缀数组项组成所述联系人的后缀数组。其中,所述查找模块用于:当接收到一个查找联系人的关键词时,按照接收字符的顺序,将接收到的所述关键词中的各个字符依次作为二分查找的索引;如果所述索引是首个接收的字符,则在已排序的所有后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;如果所述索引不是首个接收的字符,则按照预设的规则对上次查找的结果中的各个后缀数组项进行排序,然后在已排序的上次查找的结果中的各个后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;直到所述索引为最后一个接收的字符,将最后一次查找结果中的后缀数组作为与所述关键词匹配的后缀数组。优选地,所述预设的规则为按首字符的拼音首字母进行排序。进一步地,所述查找模块用于:当接收到一个查找联系人的关键词时,根据所述关键词中每一个字符的拼音首字母在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组。本专利技术提供的技术方案带来的有益效果是:通过预先为联系人列表中的每个联系人构造后缀数组,当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,将与查找得到的后缀数组对应的联系人作为查找的结果,提高了联系人查找的速度,无需针对关键词的每个字符对所有联系人遍历一次,极大地缩短了查找联系人的时间,提高了查找联系人的效率,尤其是当用户联系人较多、联系人名称较长或查找的关键词较长时,查找速度提升效果明显,增强了用户的体验。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术一实施例提供的模糊查找的方法流程图;图2是本专利技术另一实施例提供的模糊查找的方法流程图;图3是本专利技术再一实施例提供的模糊查找的装置结构图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地详细描述。本专利技术涉及二分查找。二分查找又称折半查找,最大的优点是比较次数少,查找速度快,效率高,平均性能好。二分查找的过程如下:首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如本文档来自技高网...
模糊查找的方法和装置

【技术保护点】
一种模糊查找的方法,其特征在于,所述方法包括:预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组项;按照预设的规则对构造得到的所有后缀数组中的各个后缀数组项进行排序;当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,将与查找得到的后缀数组对应的联系人作为查找的结果。

【技术特征摘要】
1.一种模糊查找的方法,其特征在于,所述方法包括:预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组项;按照预设的规则对构造得到的所有后缀数组中的各个后缀数组项进行排序;当接收到一个查找联系人的关键词时,按照接收字符的顺序,将接收到的所述关键词中的各个字符依次作为二分查找的索引;如果所述索引是首个接收的字符,则在已排序的所有后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;如果所述索引不是首个接收的字符,则按照预设的规则对上次查找的结果中的各个后缀数组项进行排序,然后在已排序的上次查找的结果中的各个后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;直到所述索引为最后一个接收的字符,将最后一次查找结果中的后缀数组作为与所述关键词匹配的后缀数组;将与查找得到的后缀数组对应的联系人作为查找的结果。2.根据权利要求1所述的方法,其特征在于,预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组项,包括:每当向联系人列表中添加一个联系人时,从所述联系人的最后一个字符开始,按照字符从后向前的顺序每次获取一个字符;如果获取的字符为所述联系人的最后一个字符,则将所述最后一个字符作为后缀数组项;如果获取的字符不是所述联系人的最后一个字符,则将所述联系人中从获取的所述字符至最后一个字符的字符组合作为后缀数组项;直到当前获取的字符为所述联系人中的第一个字符为止,将得到的所有后缀数组项组成所述联系人的后缀数组。3.根据权利要求1所述的方法,其特征在于,所述预设的规则为按首字符的拼音首字母进行排序,相应地,所述如果所述索引是首个接收的字符,则在已排序的所有后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果,包括:如果所述索引是首个接收的字符,则根据所述索引的拼音首字母在已排序的所有后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;所述如果所述索引不是首个接收的字符,则按照预设的规则对上次查找的结果中的各个后缀数组项进行排序,然后在已排序的上次查找的结果中的各个后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果,包括:如果所述索引不是首个接收的字符,则按照预设...

【专利技术属性】
技术研发人员:张雁飞
申请(专利权)人:北京新媒传信科技有限公司
类型:发明
国别省市:北京;11

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

1