CN103902599A - 模糊查找的方法和装置 - Google Patents
模糊查找的方法和装置 Download PDFInfo
- Publication number
- CN103902599A CN103902599A CN201210581534.9A CN201210581534A CN103902599A CN 103902599 A CN103902599 A CN 103902599A CN 201210581534 A CN201210581534 A CN 201210581534A CN 103902599 A CN103902599 A CN 103902599A
- Authority
- CN
- China
- Prior art keywords
- suffix array
- character
- contact person
- keyword
- suffix
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2468—Fuzzy queries
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种模糊查找的方法和装置,属于模糊查找技术领域。所述方法包括:预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组项;按照预设的规则对构造得到的所有后缀数组中的各个后缀数组项进行排序;当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,将与查找得到的后缀数组对应的联系人作为查找的结果。所述装置包括:构造模块、排序模块和查找模块。本发明缩短了查找联系人的时间,提高了查找联系人的效率,增强了用户的体验。
Description
技术领域
本发明涉及模糊查找技术领域,特别涉及一种模糊查找的方法和装置。
背景技术
目前,IM(Instant Messenger,即时通讯)客户端一般都提供模糊查找联系人的功能。模糊查找是指查找时不必以搜索目标的全称为关键词进行查找,而是可以以搜索目标的部分名称为关键词进行查找的过程。如何实现快速模糊匹配联系人对用户而言至关重要,尤其是当用户的IM联系人数量越来越大时,会极大地影响用户的体验。
现有的模糊查找联系人的方案是:根据关键词对联系人列表进行逐字符的多次遍历。例如,某用户IM客户端的联系人列表中有N个联系人,用户输入的模糊关键词为“王*明”,其中,*表示该位置处可以为任何字符,则模糊查找的过程是首先在N个联系人中遍历找到包含字符“王”的联系人,然后再重新对N个联系人进行遍历找到包含字符“明”的联系人,根据两次遍历的结果综合得到与关键词“王*明”匹配的联系人。
但是上述方案具有如下缺陷:每次查找都需要对所有的联系人进行遍历,非常耗时,当用户联系人较多、联系人名称较长或查找的关键词较长时,查找的速度非常慢,影响了用户的体验。
发明内容
为了提高查找联系人的速度,本发明提供了一种模糊查找的方法和装置。所述技术方案如下:
一方面,本发明提供了一种模糊查找的方法,所述方法包括:
预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组项;
按照预设的规则对构造得到的所有后缀数组中的各个后缀数组项进行排序;
当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,将与查找得到的后缀数组对应的联系人作为查找的结果。
其中,预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组项,包括:
每当向联系人列表中添加一个联系人时,从所述联系人的最后一个字符开始,按照字符从后向前的顺序每次获取一个字符;
如果获取的字符为所述联系人的最后一个字符,则将所述最后一个字符作为后缀数组项;
如果获取的字符不是所述联系人的最后一个字符,则将所述联系人中从获取的所述字符至最后一个字符的字符组合作为后缀数组项;
直到当前获取的字符为所述联系人中的第一个字符为止,将得到的所有后缀数组项组成所述联系人的后缀数组。
其中,当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,包括:
当接收到一个查找联系人的关键词时,按照接收字符的顺序,将接收到的所述关键词中的各个字符依次作为二分查找的索引;
如果所述索引是首个接收的字符,则在已排序的所有后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;
如果所述索引不是首个接收的字符,则按照预设的规则对上次查找的结果中的各个后缀数组项进行排序,然后在已排序的上次查找的结果中的各个后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;
直到所述索引为最后一个接收的字符,将最后一次查找结果中的后缀数组作为与所述关键词匹配的后缀数组。
优选地,所述预设的规则为按首字符的拼音首字母进行排序。
进一步地,当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,包括:
当接收到一个查找联系人的关键词时,根据所述关键词中每一个字符的拼音首字母在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组。
另一方面,本发明还提供了一种模糊查找的装置,所述装置包括:
构造模块,用于预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组项;
排序模块,用于按照预设的规则对所述构造模块构造得到的所有后缀数组中的各个后缀数组项进行排序;
查找模块,用于当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,将与查找得到的后缀数组对应的联系人作为查找的结果。
其中,所述构造模块用于:
每当向联系人列表中添加一个联系人时,从所述联系人的最后一个字符开始,按照字符从后向前的顺序每次获取一个字符;
如果获取的字符为所述联系人的最后一个字符,则将所述最后一个字符作为后缀数组项;
如果获取的字符不是所述联系人的最后一个字符,则将所述联系人中从获取的所述字符至最后一个字符的字符组合作为后缀数组项;
直到当前获取的字符为所述联系人中的第一个字符为止,将得到的所有后缀数组项组成所述联系人的后缀数组。
其中,所述查找模块用于:
当接收到一个查找联系人的关键词时,按照接收字符的顺序,将接收到的所述关键词中的各个字符依次作为二分查找的索引;
如果所述索引是首个接收的字符,则在已排序的所有后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;
如果所述索引不是首个接收的字符,则按照预设的规则对上次查找的结果中的各个后缀数组项进行排序,然后在已排序的上次查找的结果中的各个后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;
直到所述索引为最后一个接收的字符,将最后一次查找结果中的后缀数组作为与所述关键词匹配的后缀数组。
优选地,所述预设的规则为按首字符的拼音首字母进行排序。
进一步地,所述查找模块用于:
当接收到一个查找联系人的关键词时,根据所述关键词中每一个字符的拼音首字母在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组。
本发明提供的技术方案带来的有益效果是:通过预先为联系人列表中的每个联系人构造后缀数组,当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,将与查找得到的后缀数组对应的联系人作为查找的结果,提高了联系人查找的速度,无需针对关键词的每个字符对所有联系人遍历一次,极大地缩短了查找联系人的时间,提高了查找联系人的效率,尤其是当用户联系人较多、联系人名称较长或查找的关键词较长时,查找速度提升效果明显,增强了用户的体验。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的模糊查找的方法流程图;
图2是本发明另一实施例提供的模糊查找的方法流程图;
图3是本发明再一实施例提供的模糊查找的装置结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明涉及二分查找。二分查找又称折半查找,最大的优点是比较次数少,查找速度快,效率高,平均性能好。二分查找的过程如下:首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
参见图1,本发明一实施例提供了一种模糊查找的方法,包括:
101:预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组项。
102:按照预设的规则对构造得到的所有后缀数组中的各个后缀数组项进行排序。
103:当接收到一个查找联系人的关键词时,根据该关键词在已排序的所有后缀数组项中进行二分查找,得到与该关键词匹配的后缀数组,将与查找得到的后缀数组对应的联系人作为查找的结果。
结合上述方法,第一种实施方式下,预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组,可以包括:
每当向联系人列表中添加一个联系人时,从该联系人的最后一个字符开始,按照字符从后向前的顺序每次获取一个字符;
如果获取的字符为该联系人的最后一个字符,则将该最后一个字符作为后缀数组项;
如果获取的字符不是该联系人的最后一个字符,则将该联系人中从获取的字符至最后一个字符的字符组合作为后缀数组项;
直到当前获取的字符为该联系人中的第一个字符为止,将得到的所有后缀数组项组成该联系人的后缀数组。
结合上述方法,第二种实施方式下,当接收到一个查找联系人的关键词时,根据该关键词在已排序的所有后缀数组项中进行二分查找,得到与该关键词匹配的后缀数组,可以包括:
当接收到一个查找联系人的关键词时,按照接收字符的顺序,将接收到的关键词中的各个字符依次作为二分查找的索引;
如果该索引是首个接收的字符,则在已排序的所有后缀数组项中进行二分查找,找到首字符为该索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;
如果该索引不是首个接收的字符,则按照预设的规则对上次查找的结果中的各个后缀数组项进行排序,然后在已排序的上次查找的结果中的各个后缀数组项中进行二分查找,找到首字符为该索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;
直到该索引为最后一个接收的字符,将最后一次查找结果中的后缀数组作为与该关键词匹配的后缀数组。
结合上述方法,上述方法的第三种实施方式下,所述预设的规则为按首字符的拼音首字母进行排序。
结合上述第三种实施方式,上述方法的第四种实施方式下,当接收到一个查找联系人的关键词时,根据该关键词在已排序的所有后缀数组项中进行二分查找,得到与该关键词匹配的后缀数组,包括:
当接收到一个查找联系人的关键词时,根据该关键词中每一个字符的拼音首字母在已排序的所有后缀数组项中进行二分查找,得到与该关键词匹配的后缀数组。
本实施例提供的上述方法,通过预先为联系人列表中的每个联系人构造后缀数组,当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,将与查找得到的后缀数组对应的联系人作为查找的结果,提高了联系人查找的速度,无需针对关键词的每个字符对所有联系人遍历一次,极大地缩短了查找联系人的时间,提高了查找联系人的效率,尤其是当用户联系人较多、联系人名称较长或查找的关键词较长时,查找速度提升效果明显,增强了用户的体验。
参见图2,本发明另一实施例还提供了一种模糊查找的方法,包括:
201:每当向联系人列表中添加一个联系人时,为该联系人构造一个后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组。
本实施例中,后缀数组是指字符串S的一个子串,该子串是从字符串S的某个位置i开始到整个串末尾结束的一个特殊子串。其中,i表示字符串S的N个字符中的任一个。
具体地,本步骤可以包括:
从待添加的联系人的最后一个字符开始,按照字符从后向前的顺序每次获取一个字符;
如果获取的字符为该联系人的最后一个字符,则将该最后一个字符作为后缀数组项;如果获取的字符不是该联系人的最后一个字符,则将该联系人中从获取的字符至最后一个字符的字符组合作为后缀数组项;
直到当前获取的字符为该联系人中的第一个字符为止,将得到的所有后缀数组项组成该联系人的后缀数组。
例如,有一个联系人为“张大千”,则为该联系人构造后缀数组如表1所示。
表1
千 |
大千 |
张大千 |
为另一个联系人“张雁飞”构造后缀数组如表2所示。
表2
飞 |
雁飞 |
张雁飞 |
202:为联系人列表中的每个联系人构造后缀数组后,按照预设的规则对构造得到的所有后缀数组中的各个后缀数组项进行排序。
本实施例中,具体地,所述预设的规则可以为按首字符的拼音首字母进行排序。
例如,联系人列表包括两个联系人:{“张大千”,"张雁飞"},分别为这两个联系人构造如表1所示的后缀数组1和如表2所示的后缀数组2后,总共得到6个后缀数组项,“千”、“大千”、“张大千”、“飞”、“雁飞”和“张雁飞”,按照首字符的拼音首字母进行排序后,可以得到如表3所示的后缀数组列表。
表3
大千 |
飞 |
千 |
雁飞 |
张大千 |
张雁飞 |
203:当接收到一个查找联系人的关键词时,根据该关键词中每一个字符的拼音首字母在已排序的所有后缀数组项中进行二分查找,得到与该关键词匹配的后缀数组。
具体地,本步骤可以包括如下步骤:
当接收到一个查找联系人的关键词时,按照接收字符的顺序,将接收到的关键词中的各个字符依次作为二分查找的索引;
如果该索引是首个接收的字符,则根据该索引的拼音首字母在已排序的所有后缀数组项中进行二分查找,找到首字符为该索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;
如果该索引不是首个接收的字符,则按照预设的规则对上次查找的结果中的各个后缀数组项进行排序,然后根据该索引的拼音首字母在已排序的上次查找的结果中的各个后缀数组项中进行二分查找,找到首字符为该索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;
直到该索引为最后一个接收的字符,将最后一次查找结果中的后缀数组作为与关键词匹配的后缀数组。
例如,在得到如表3所示的后缀数组列表后,当接收到查找联系人的关键词“张*飞”时,首先,根据用户输入的第一个字符“张”,将该字符“张”的拼音首字母“Z”与表3中间位置的后缀数组项“雁飞”的首字符的拼音首字母“Y”进行比较,确定字符“张”的查找范围为“雁飞”后面的后缀数组项,忽略“雁飞”前面的后缀数组项。在“雁飞”后面的后缀数组项中找到两个首字符为“张”的后缀数组项“张大千”和“张雁飞”,将“张大千”所在的后缀数组1和“张雁飞”所在的后缀数组2作为本次查找的结果。然后,根据关键词中的下一个字符“飞”进行下一次查找,在上一次的查找结果后缀数组1和后缀数组2中进行类似的查找,得到首字符为“飞”的后缀数组项“飞”,将该后缀数组项“飞”所在的后缀数组2作为本次查找的结果,由于字符“飞”为关键词中的最后一个字符,因此,查找结果后缀数组就是与该关键词匹配的后缀数组,该后缀数组对应的联系人“张雁飞”就是查找到的联系人。
204:在得到与该关键词匹配的后缀数组后,将与所述得到的后缀数组对应的联系人作为查找的结果。
本实施例提供的上述方法,通过预先为联系人列表中的每个联系人构造后缀数组,当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,将与查找得到的后缀数组对应的联系人作为查找的结果,提高了联系人查找的速度,无需针对关键词的每个字符对所有联系人遍历一次,极大地缩短了查找联系人的时间,提高了查找联系人的效率,尤其是当用户联系人较多、联系人名称较长或查找的关键词较长时,查找速度提升效果明显,增强了用户的体验。另外,所述方法跟联系人的长度无关,实现了快速模糊匹配,而且,进行二分查找,无需遍历联系人列表,与现有技术相比,极大地提高了联系人的查找速度。
参见图3,本发明再一实施例还提供了一种模糊查找的装置,包括:
构造模块301,用于预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组;
排序模块302,用于按照预设的规则对构造模块301构造得到的所有后缀数组中的各个后缀数组项进行排序;
查找模块303,用于当接收到一个查找联系人的关键词时,根据关键词在已排序的所有后缀数组项中进行二分查找,得到与关键词匹配的后缀数组,将与查找得到的后缀数组对应的联系人作为查找的结果。
结合上述装置,第一种实施方式下,构造模块301用于:
每当向联系人列表中添加一个联系人时,从联系人的最后一个字符开始,按照字符从后向前的顺序每次获取一个字符;
如果获取的字符为联系人的最后一个字符,则将最后一个字符作为后缀数组项;
如果获取的字符不是联系人的最后一个字符,则将联系人中从获取的字符至最后一个字符的字符组合作为后缀数组项;
直到当前获取的字符为联系人中的第一个字符为止,将得到的所有后缀数组项组成联系人的后缀数组。
结合上述装置,第二种实施方式下,查找模块303用于:
当接收到一个查找联系人的关键词时,按照接收字符的顺序,将接收到的关键词中的各个字符依次作为二分查找的索引;
如果索引是首个接收的字符,则在已排序的所有后缀数组项中进行二分查找,找到首字符为索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;
如果索引不是首个接收的字符,则按照预设的规则对上次查找的结果中的各个后缀数组项进行排序,然后在已排序的上次查找的结果中的各个后缀数组项中进行二分查找,找到首字符为索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;
直到索引为最后一个接收的字符,将最后一次查找结果中的后缀数组作为与关键词匹配的后缀数组。
结合上述装置,上述装置的第三种实施方式下,所述预设的规则为按首字符的拼音首字母进行排序。
结合上述第三种实施方式,上述装置的第四种实施方式下,查找模块303用于:
当接收到一个查找联系人的关键词时,根据关键词中每一个字符的拼音首字母在已排序的所有后缀数组项中进行二分查找,得到与关键词匹配的后缀数组。
本实施例提供的上述装置可以执行上述任一方法实施例中提供的方法,详细过程见方法实施例中的描述,此处不赘述。
本实施例提供的上述装置,通过预先为联系人列表中的每个联系人构造后缀数组,当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,将与查找得到的后缀数组对应的联系人作为查找的结果,提高了联系人查找的速度,无需针对关键词的每个字符对所有联系人遍历一次,极大地缩短了查找联系人的时间,提高了查找联系人的效率,尤其是当用户联系人较多、联系人名称较长或查找的关键词较长时,查找速度提升效果明显,增强了用户的体验。另外,所述方法跟联系人的长度无关,实现了快速模糊匹配,而且,进行二分查找,无需遍历联系人列表,与现有技术相比,极大地提高了联系人的查找速度。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种模糊查找的方法,其特征在于,所述方法包括:
预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组项;
按照预设的规则对构造得到的所有后缀数组中的各个后缀数组项进行排序;
当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,将与查找得到的后缀数组对应的联系人作为查找的结果。
2.根据权利要求1所述的方法,其特征在于,预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组项,包括:
每当向联系人列表中添加一个联系人时,从所述联系人的最后一个字符开始,按照字符从后向前的顺序每次获取一个字符;
如果获取的字符为所述联系人的最后一个字符,则将所述最后一个字符作为后缀数组项;
如果获取的字符不是所述联系人的最后一个字符,则将所述联系人中从获取的所述字符至最后一个字符的字符组合作为后缀数组项;
直到当前获取的字符为所述联系人中的第一个字符为止,将得到的所有后缀数组项组成所述联系人的后缀数组。
3.根据权利要求1所述的方法,其特征在于,当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,包括:
当接收到一个查找联系人的关键词时,按照接收字符的顺序,将接收到的所述关键词中的各个字符依次作为二分查找的索引;
如果所述索引是首个接收的字符,则在已排序的所有后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;
如果所述索引不是首个接收的字符,则按照预设的规则对上次查找的结果中的各个后缀数组项进行排序,然后在已排序的上次查找的结果中的各个后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;
直到所述索引为最后一个接收的字符,将最后一次查找结果中的后缀数组作为与所述关键词匹配的后缀数组。
4.根据权利要求1所述的方法,其特征在于,所述预设的规则为按首字符的拼音首字母进行排序。
5.根据权利要求4所述的方法,其特征在于,当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,包括:
当接收到一个查找联系人的关键词时,根据所述关键词中每一个字符的拼音首字母在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组。
6.一种模糊查找的装置,其特征在于,所述装置包括:
构造模块,用于预先为联系人列表中的每个联系人构造后缀数组,所述后缀数组包括根据所述联系人的字符得到的至少一个后缀数组项;
排序模块,用于按照预设的规则对所述构造模块构造得到的所有后缀数组中的各个后缀数组项进行排序;
查找模块,用于当接收到一个查找联系人的关键词时,根据所述关键词在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组,将与查找得到的后缀数组对应的联系人作为查找的结果。
7.根据权利要求6所述的装置,其特征在于,所述构造模块用于:
每当向联系人列表中添加一个联系人时,从所述联系人的最后一个字符开始,按照字符从后向前的顺序每次获取一个字符;
如果获取的字符为所述联系人的最后一个字符,则将所述最后一个字符作为后缀数组项;
如果获取的字符不是所述联系人的最后一个字符,则将所述联系人中从获取的所述字符至最后一个字符的字符组合作为后缀数组项;
直到当前获取的字符为所述联系人中的第一个字符为止,将得到的所有后缀数组项组成所述联系人的后缀数组。
8.根据权利要求6所述的装置,其特征在于,所述查找模块用于:
当接收到一个查找联系人的关键词时,按照接收字符的顺序,将接收到的所述关键词中的各个字符依次作为二分查找的索引;
如果所述索引是首个接收的字符,则在已排序的所有后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;
如果所述索引不是首个接收的字符,则按照预设的规则对上次查找的结果中的各个后缀数组项进行排序,然后在已排序的上次查找的结果中的各个后缀数组项中进行二分查找,找到首字符为所述索引的后缀数组项,将找到的后缀数组项所在的后缀数组作为本次查找的结果;
直到所述索引为最后一个接收的字符,将最后一次查找结果中的后缀数组作为与所述关键词匹配的后缀数组。
9.根据权利要求6所述的装置,其特征在于,所述预设的规则为按首字符的拼音首字母进行排序。
10.根据权利要求9所述的装置,其特征在于,所述查找模块用于:
当接收到一个查找联系人的关键词时,根据所述关键词中每一个字符的拼音首字母在已排序的所有后缀数组项中进行二分查找,得到与所述关键词匹配的后缀数组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210581534.9A CN103902599B (zh) | 2012-12-27 | 2012-12-27 | 模糊查找的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210581534.9A CN103902599B (zh) | 2012-12-27 | 2012-12-27 | 模糊查找的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103902599A true CN103902599A (zh) | 2014-07-02 |
CN103902599B CN103902599B (zh) | 2017-04-05 |
Family
ID=50993927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210581534.9A Active CN103902599B (zh) | 2012-12-27 | 2012-12-27 | 模糊查找的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103902599B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653567A (zh) * | 2014-12-04 | 2016-06-08 | 南京理工大学常熟研究院有限公司 | 一种文本序列数据中快速查找特征字符串的方法 |
CN105824804A (zh) * | 2016-03-31 | 2016-08-03 | 长安大学 | 基于词库的英语拼写纠错工具和方法 |
CN106953959A (zh) * | 2017-04-18 | 2017-07-14 | 深圳和家园网络科技有限公司 | 一种基于拼音匹配的电话拨号方法 |
CN106953806A (zh) * | 2017-03-27 | 2017-07-14 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种基于后缀索引匹配ip地址的方法及系统 |
CN107038230A (zh) * | 2017-04-07 | 2017-08-11 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种基于后缀数组的短信查找方法及系统 |
CN107291858A (zh) * | 2017-06-09 | 2017-10-24 | 成都索贝数码科技股份有限公司 | 一种基于字符串后缀的数据索引方法 |
CN109299152A (zh) * | 2018-08-27 | 2019-02-01 | 中山大学 | 一种实时数据流的后缀数组索引方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5424524A (en) * | 1993-06-24 | 1995-06-13 | Ruppert; Jonathan P. | Personal scanner/computer for displaying shopping lists and scanning barcodes to aid shoppers |
CN101686274A (zh) * | 2008-09-22 | 2010-03-31 | 深圳富泰宏精密工业有限公司 | 联系人查找系统及方法 |
CN101694670A (zh) * | 2009-10-20 | 2010-04-14 | 北京航空航天大学 | 一种基于公共子串的中文Web文档在线聚类方法 |
CN102750461A (zh) * | 2012-06-14 | 2012-10-24 | 东北大学 | 一种可得到完全解的生物序列局部比对方法 |
-
2012
- 2012-12-27 CN CN201210581534.9A patent/CN103902599B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5424524A (en) * | 1993-06-24 | 1995-06-13 | Ruppert; Jonathan P. | Personal scanner/computer for displaying shopping lists and scanning barcodes to aid shoppers |
CN101686274A (zh) * | 2008-09-22 | 2010-03-31 | 深圳富泰宏精密工业有限公司 | 联系人查找系统及方法 |
CN101694670A (zh) * | 2009-10-20 | 2010-04-14 | 北京航空航天大学 | 一种基于公共子串的中文Web文档在线聚类方法 |
CN102750461A (zh) * | 2012-06-14 | 2012-10-24 | 东北大学 | 一种可得到完全解的生物序列局部比对方法 |
Non-Patent Citations (1)
Title |
---|
张喜娟: "基于后缀数组的近似字符串匹配", 《万方数据》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653567A (zh) * | 2014-12-04 | 2016-06-08 | 南京理工大学常熟研究院有限公司 | 一种文本序列数据中快速查找特征字符串的方法 |
CN105824804A (zh) * | 2016-03-31 | 2016-08-03 | 长安大学 | 基于词库的英语拼写纠错工具和方法 |
CN106953806A (zh) * | 2017-03-27 | 2017-07-14 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种基于后缀索引匹配ip地址的方法及系统 |
CN107038230A (zh) * | 2017-04-07 | 2017-08-11 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种基于后缀数组的短信查找方法及系统 |
CN106953959A (zh) * | 2017-04-18 | 2017-07-14 | 深圳和家园网络科技有限公司 | 一种基于拼音匹配的电话拨号方法 |
CN107291858A (zh) * | 2017-06-09 | 2017-10-24 | 成都索贝数码科技股份有限公司 | 一种基于字符串后缀的数据索引方法 |
CN107291858B (zh) * | 2017-06-09 | 2021-06-08 | 成都索贝数码科技股份有限公司 | 一种基于字符串后缀的数据索引方法 |
CN109299152A (zh) * | 2018-08-27 | 2019-02-01 | 中山大学 | 一种实时数据流的后缀数组索引方法及装置 |
CN109299152B (zh) * | 2018-08-27 | 2021-11-30 | 中山大学 | 一种实时数据流的后缀数组索引方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103902599B (zh) | 2017-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103902599A (zh) | 模糊查找的方法和装置 | |
CN106649818B (zh) | 应用搜索意图的识别方法、装置、应用搜索方法和服务器 | |
CN109670163B (zh) | 信息识别方法、信息推荐方法、模板构建方法及计算设备 | |
US11250042B2 (en) | Taxonomy enrichment using ensemble classifiers | |
CN108897842B (zh) | 计算机可读存储介质及计算机系统 | |
US11514063B2 (en) | Method and apparatus of recommending information based on fused relationship network, and device and medium | |
CN105045875B (zh) | 个性化信息检索方法及装置 | |
CN106708893A (zh) | 搜索查询词纠错方法和装置 | |
CN103136266A (zh) | 邮件分类的方法及装置 | |
CN107577755B (zh) | 一种搜索方法 | |
CN101751386B (zh) | 一种未登录词的识别方法 | |
CN106909669B (zh) | 一种推广信息的检测方法及装置 | |
CN102073704B (zh) | 文本分类处理方法和系统以及设备 | |
CN102163234A (zh) | 一种基于纠错相关度对查询序列进行纠错的设备和方法 | |
US20130066898A1 (en) | Matching target strings to known strings | |
CN103365992A (zh) | 一种基于一维线性空间实现Trie树的词典检索方法 | |
Man | Feature extension for short text categorization using frequent term sets | |
CN112948608B (zh) | 图片查找方法、装置、电子设备及计算机可读存储介质 | |
CN108319518A (zh) | 基于循环神经网络的文件碎片分类方法及装置 | |
CN112579729A (zh) | 文档质量评价模型的训练方法、装置、电子设备和介质 | |
CN104102694B (zh) | 树形节点排序方法和树形节点排序装置 | |
CN108920451A (zh) | 基于动态阈值和多分类器的文本情感分析方法 | |
CN109543002B (zh) | 简写字符的还原方法、装置、设备及存储介质 | |
CN111008285B (zh) | 一种基于论文关键属性网络的作者消歧方法 | |
CN108170852A (zh) | 一种高效准确的股票搜索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: Room 810, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080 Patentee after: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building block A room 602 Patentee before: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |