一种字典树生成方法及搜索方法

文档序号:6367552阅读:189来源:国知局
专利名称:一种字典树生成方法及搜索方法
技术领域
本发明涉及信息存储与捜索技术领域,尤其涉及ー种字典树生成方法及捜索方法。
背景技术
在智能手机中,为了让用户更加快捷的查找到联系人,一般都会在拨号界面提供相应的搜索功能。而拨号界面的输入一般说来都是数字和*/#号,所以,一般都采用T9的对应关系来表示拼音,然后采用拼音来搜索联系人。T9的对应关系如表一所不
表一
I号字符I字母j拨号字符I字母j拨号字符I字母
I__2 _ ABC 3 _DEF
4GHI 5JKL 6MNO
7PQRS 8TUV 9WXYZ
* 0 tt
举例来说,假设联系人“李小明”的电话号码是13912345678。如果用户要在拨号界面
搜索该联系人“李小明”,就可以输入LiXiaoMing的对应的数字5494266464,通过T9搜索
算法的匹配,就可以搜索到联系人“李小明”并显示他的电话号码以及其他信息。为了方便用户的更加方便的查找,T9搜索算法往往需要更加复杂的匹配模型。比如要搜索联系人“李小明”,需要输入5494266464这10个数字,为了简化用户输入,T9搜索算法往往允许用户直接输入LXM的对应数字596三个数字就可以匹配联系人李小明。同样,LiXM, LXiaoM, LXMing, LiXiaoM...等等都可以匹配到联系人李小明。一般说来,对于ー个联系人,往往需要事先生成所对应的若干可以搜索到该联系人的匹配串,然后简单匹配用户的输入和事先生成的联系人匹配串,就可以搜索到该联系人。这种技术方案存在明显的缺点,仍然以联系人“李小明”为例,需要生成的匹配串很多,共计42个,具体如下
L, Li, X,Xi, Xia, Xiao, M, Mi, Min, Ming, LiXiao, LX, LXi, LXia, LiX,LiXi, LiXia, LXiao, XiaoMing, XM, XMi, XMin, XiaoM, XiaoMi, XiaoMin, XMing,LiXiaoMing, LXM, LXMi, LXMin, LiXM, LiXMi, LiXMin, LXiaoM, LXiaoMi, LXiaoMin,LXMing, LiXiaoMj LiXiaoMij LiXiaoMinj LiXMingj LXiaoMing0这个数字随着联系人名字的增加而指数増加。如果用户在存储联系人的时候在名字中也带上联系人所在公司、职务(这是很多人保存联系人的方法),就会导致匹配串很多。据估算,假设平均一个联系人的“名字”包含5个字符,平均每个字符的拼音长度是4,则会存在208个匹配串。如果存在500个联系人的话,则会存在10. 4万个匹配串。极端情况下(联系人名字很长,联系人数目很多时)匹配串会指数级的增涨。大量的数据会导致两个后果其ー是需要较大的存储空间,其ニ是需要较长的查询时间。因为搜索是在移动设备中进行的,移动设备的存储空间和CPU资源都比较宝贵。第ー个后果会带来较大的浪费,而第二后果则会带来很大的延迟,増加系统响应用户输入的时间,导致用户觉得输入过程不流畅。

发明内容
本发明的目的在于提出ー种字典树生成方法及搜索方法,用以解决在T9搜索中由于大量数据导致的需要较大存储空间和响应时间的问题,減少存储空间并缩短响应时间。为达此目的,本发明采用以下技术方案
ー种字典树生成方法,该方法包括
将联系人信息转换为拼音;
将所述拼音按照T9键盘的对应方式对应为数字;
将所述数字中所述联系人信息中每个汉字对应的第一个所述拼音标记为首字母节
点;
生成字典树,并存储。所述将联系人信息转换为拼音,包括
将所述联系人信息从汉字转换为全拼。所述将所述拼音按照T9键盘的对应方式对应为数字,包括
将所述拼音中每个字母分别按照T9键盘的对应方式对应成为数字,生成ー个数字串。所述将所述数字中所述联系人信息中每个汉字对应的第一个所述拼音标记为首字母节点,包括
将所述联系人信息中每个汉字对应的第一个所述拼音的字母进行标记;
将所述拼音对应成数字后,将所述每个汉字对应的第一个所述拼音的字母所对应的数字标记为首字母节点。ー种字典树搜索方法,用于如上所述的字典树生成方法所生成的字典树,该方法包括
使用用户输入的第I个数字逐个匹配所有字典树中所有的首字母节点,将匹配的字典树存入集合L[l] ;L是ー个集合的列表,长度为M ;L[m]表示第m个集合;所述M为用户输入的数字的总数;
使用用户输入的第m+1个数字逐个匹配所述集合L[m]中字典树中上次匹配的首字母的下ー个首字母节点,将匹配的字典树存入集合L[m+1];所述m=2,3……M;
使用用户输入的第m+1个数字逐个匹配所述集合L[m]中字典树中上次匹配的首字母节点与下ー个首字母节点之间的节点,将匹配的字典树存入集合L[m+k];所述k为上
次匹配的首字母节点与下ー个首字母节点之间的节点的个数;所述m=l,2,3......M-k,
M_k+l〈=k〈=M0以此类推,直至将用户输入的M个数字均匹配完毕,将匹配的字典树存入集合L[M];
若所述集合L[M]不为空,则输出所述集合L[M]中字典树对应的联系人信息为搜索结果;否则,若所述集合L[M]为空,则输出不匹配,无此联系人为搜索結果。
所述字典树对应的联系人信息为搜索结果,包括
将所述字典树对应的联系人信息输出,作为搜索結果。采用了本发明的技术方案,通过对联系人信息中每个字的第一个拼音字母进行标识,得到首字母节点,生成字典树来存储联系人信息。在进行搜索时,通过获取用户输入的数字,分别与字典树中的首字母节点进行匹配,从而完成快速的搜索过程。本发明实施例提供的方案,在存储字典树的时候,占用较小的存储空间,在进行搜索的时候,能够快速的得到捜索结果,从而降低字典树的存储对于存储空间的要求,也能够有效的减小搜索的响应时间,提闻用户体验度。


图I是本发明具体实施方式
中本发明提供的字典树生成方法原理流程图;、 图2是本发明具体实施方式
中现有技术字典树生成结构示意 图3是本发明具体实施方式
中本发明提供的捜索方法原理流程图。
具体实施例方式下面结合附图并通过具体实施方式
来进ー步说明本发明的技术方案。本发明技术方案的主要思想是在存储联系人信息的时候,通过对联系人信息中每个字的第一个拼音字母进行标识,得到首字母节点,生成字典树来存储联系人信息。这样就不必要生成所有的字符串进行存储联系人信息,而仅仅需要生成9个字典树就可以存储所有的联系人信息。在搜索联系人信息的时候,将用户输入的数字分别与存储的字典树中的首字母节点进行匹配,从而快速的定位联系人信息所对应的字典树,从而快速的得到搜索結果。对于用户输入完整的联系人信息的搜索过程,本发明技术方案也设定了在无法匹配首字母节点的情况下,或者在无法采用首字母节点匹配完成捜索的情况下,分别匹配两个首字母节点之间的其它节点,从而完整的匹配字典树中的节点,确保可以准确的得到搜索結果。本发明提供的技术方案中,以T9输入法相应的字典树为例,来说明字典树的存储和捜索的过程,实际上,对于其它的输入法,同样可以生成相应的字典树并进行捜索,所需要的仅仅是将联系人信息与字典树自检对应的过程中由通过T9键盘的对应改为相应的对应方法即可。本发明提供的技术方案同样适用于其它可以通过字典树来存储信息,并根据字典树来搜索信息的方案中。如图I所示,为本发明提供的字典树生成方法原理流程图,具体如下
步骤11,将联系人信息转换为拼音。在用户存储联系人信息吋,由于联系人信息是汉字或者其它的形式,首先的步骤需要将联系人信息由汉字转换成拼音,特别是需要转换成全拼的形式。这个过程,一般的手机或者其它终端可以通过内置的输入法转换程序完成。步骤12,将拼音按照T9键盘的对应方式对应为数字。将汉字转换为拼音后,还需要进ー步将拼音中每个字母分别按照T9键盘的对应方式对应成为数字,生成ー个数字串。这里的T9键盘就是手机或者其它终端上的键盘,具体的字母与数字的对应关系可以參见表一的内容。步骤13,将数字中联系人信息中每个汉字对应的第一个拼音字母标记为首字母节点。这里,将联系人信息中每个汉字对应的第一个拼音的字母进行标记;然后将拼音对应成数字后,将每个汉字对应的第一个拼音的字母所对应的数字标记为首字母节点。步骤14,生成字典树并存储。这样,经过标记首字母节点的字典树就生成了。如图2所示,分别为现有技术中生成的字典树的形式与本发明提供的方案所生成的字典树的形式,其中,仍然以联系人“李小明”为例来说明。对比可以知道,本发明提供的方案中生成的字典树,整个系统中只存在9棵这样的字典树(因为0没有任何字母对应)。而且,每棵字典树都可以共享共有的前綴。当然,最差的情况是所有的联系人信息没有共有的前缀,这种情况下,每个联系人信息需要存储ー个从根节点到叶子就可以。如果有500个联系人信息,用现有技术中的字典树生成方法,平均需要10. 4万个项,现在最多需要500个从根节点到叶子的路径(最坏情況),变成了原来的0. 48%。在平均情况下,这个数据会更加小。相应的,本发明提供ー种字典树搜索方法,适用于上述的字典树生成方法生成的字典树,如图3所示,其原理流程如下
步骤21,使用用户输入的第I个数字逐个匹配所有字典树中所有的首字母节点,将匹配的字典树存入集合L[l]。 这里的L是ー个集合的列表,长度为M (即M个集合),L[m]表示第m个集合,所述M为用户输入的数字的总数。这个步骤的原理在于获取用户输入的首个数字,逐个匹配字典树中的所有的首字母节点,例如,用户输入的第一个数字用于匹配字典树中的所有的首字母节点,如果匹配就将该字典树存储在集合L[l]中,取得匹配的字典树以及第ー个匹配项的位置。步骤22,使用用户输入的第m+1个数字逐个匹配集合L[m]中字典树中上次匹配的首字母节点的下ー个首字母节点,将匹配的字典树存入集合L[m+1]。这里,m=2,3......M,就是在第m个数字匹配成功后,该字典树就存储在了集合
LM中,之后,需要进ー步匹配后续的数字,也就是用户输入的第m+1个数字。用户输入的第m+1个数字逐个匹配集合L[m]中字典树中上次匹配的首字母节点的下ー个首字母节点,将匹配的字典树存入集合L[m+1]。步骤23,以此类推,直至将用户输入的M个数字均匹配完毕,将匹配的字典树存入集合L[M]。这里,M是用户输入的数字的总数,也就是需要逐个的匹配用户输入的数字与字典树,直到用户输入的M个数字全部匹配过之后,将与之完全匹配的字典树存入集合L[M]。步骤24,若集合L[M]不为空,则输出集合L[M]中字典树对应的联系人信息为搜索結果;否则,若集合L[M]为空,则输出不匹配,无此联系人为搜索結果。这里,当用户输入的所有数字均匹配过之后,如果集合L[M]为空,即表示没有合适的匹配结果,用户输入错误,无此联系人。当集合L[M]不为空,表示有合适的匹配結果,从而需要将该结果输出。这里的输出,需要将该字典树对应的字符串转换为联系人信息进行输出,作为搜索結果。特别的,上述的捜索方法中,仅考虑了用户输入数字为联系人信息首字母的情況,未能考虑用户完整的输入联系人信息的状况,或者用户输入了部分联系人信息的状况,因而,上述的方法中,还包括
使用用户输入的第m+1个数字逐个匹配集合L[m]中字典树中上次匹配的首字母节点与下ー个首字母节点之间的节点,将匹配的字典树存入集合L[m+k]ふ为上次匹配的首字母节点与下ー个首字母节点之间的节点的顺序号。这里,如果用户输入的数字是联系人信息全拼,而不是首字母对应的数字吋,在
捜索的过程中,就需要对字典树中第一个首字母节点之后的所有节点进行逐个的匹配,匹配的方法是逐个的将用户输入的数字和字典树中第一个首字母节点之后的数字(节点)匹配,并将能够匹配的结果保存在ー个集合L[m+k]中。这里的k不是单一的取值,而是M_k+l〈=k〈=M,直到用户输入的所有数字匹配完成。这样,可以将用户输入的所有数字与所有的字典树之间匹配,避免了仅用首字母节点匹配带来的匹配不全的问题。若集合L[M]不为空,则输出集合L[M]中字典树对应的联系人信息为搜索结果;否贝U,若集合L[M]为空,则输出不匹配,无此联系人为搜索結果。事实上,为了能够准确的捜索结果,需要上述的两种匹配的方法结合,既要匹配字典树中第二个首字母节点,也要匹配两个首字母节点之间的其它节点,然后将结果必定会存入集合L[M],将集合L[M]的字典树对应的联系人信息输出即为最終結果。上述的搜索方法中,前面提到的估计,在所有联系人中查找的复杂度是0(log(M*N)*C),而现有技术中的搜索方法的复杂程度是0(2m*N*C)。所以本发明提供的方法的复杂度也降低了很多倍,从而可以显著降低系统的响应时间。这里的C是联系人的个数。综上所述,本发明的技术方案,通过对联系人信息中每个字的第一个拼音字母进行标识,得到首字母节点,生成字典树来存储联系人信息。在进行搜索时,通过获取用户输入的数字,分别与字典树中的首字母节点进行匹配,从而完成快速的搜索过程。本发明实施例提供的方案,在存储字典树的时候,占用较小的存储空间,在进行搜索的时候,能够快速的得到捜索结果,从而降低字典树的存储对于存储空间的要求,也能够有效的减小搜索的响应时间,提闻用户体验度。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种字典树生成方法,其特征在于,该方法包括 将联系人信息转换为拼音; 将所述拼音按照T9键盘的对应方式对应为数字; 将所述数字中所述联系人信息中每个汉字对应的第一个所述拼音标记为首字母节占. 生成字典树,并存储。
2.如权利要求I所述的方法,其特征在于,所述将联系人信息转换为拼音,包括 将所述联系人信息从汉字转换为全拼。
3.如权利要求I所述的方法,其特征在于,所述将所述拼音按照T9键盘的对应方式对应为数字,包括 将所述拼音中每个字母分别按照T9键盘的对应方式对应成为数字,生成一个数字串。
4.如权利要求I所述的方法,其特征在于,所述将所述数字中所述联系人信息中每个汉字对应的第一个所述拼音标记为首字母节点,包括 将所述联系人信息中每个汉字对应的第一个所述拼音的字母进行标记; 将所述拼音对应成数字后,将所述每个汉字对应的第一个所述拼音的字母所对应的数字标记为首字母节点。
5.一种字典树搜索方法,用于如权利要求I所述的字典树生成方法所生成的字典树,其特征在于,该方法包括 使用用户输入的第I个数字逐个匹配所有字典树中所有的首字母节点,将匹配的字典树存入集合L[l] ;L是一个集合的列表,长度为M ;L[m]表示第m个集合;所述M为用户输入的数字的总数; 使用用户输入的第m+1个数字逐个匹配所述集合L[m]中字典树中上次匹配的首字母的下一个首字母节点,将匹配的字典树存入集合L[m+1];所述m=2,3……M; 以此类推,直至将用户输入的M个数字均匹配完毕,将匹配的字典树存入集合L[M]。
6.如权利要求5所述的方法,其特征在于,该方法还包括 使用用户输入的第m+1个数字逐个匹配所述集合L[m]中字典树中上次匹配的首字母节点与下一个首字母节点之间的节点,将匹配的字典树存入集合L [m+k];所述k为上次匹配的首字母节点与下一个首字母节点之间的节点的个数;所述m=l,2,3......M-k,M_k+l〈=k〈=M0
7.如权利要求5或6所述的方法,其特征在于,搜索结果的判断方法,包括 若所述集合L[M]不为空,则输出所述集合L[M]中字典树对应的联系人信息为搜索结果;否则,若所述集合L[M]为空,则输出不匹配,无此联系人为搜索结果。
8.如权利要求5或6所述的方法,其特征在于,所述字典树对应的联系人信息为搜索结果,包括 将所述字典树对应的联系人信息输出,作为搜索结果。
全文摘要
本发明公开了一种字典树生成方法及搜索方法,包括将联系人信息转换为拼音;将所述拼音按照T9键盘的对应方式对应为数字;将所述数字中所述联系人信息中每个汉字对应的第一个所述拼音标记为首字母节点;生成字典树并存储。本发明还公开了一种字典树搜索方法。采用了本发明的技术方案,在存储字典树的时候,占用较小的存储空间,在进行搜索的时候,能够快速的得到搜索结果,从而降低字典树的存储对于存储空间的要求,也能够有效的减小搜索的响应时间,提高用户体验度。
文档编号G06F17/30GK102737105SQ20121009508
公开日2012年10月17日 申请日期2012年3月31日 优先权日2012年3月31日
发明者乔忠良, 刘新宇, 王文林 申请人:北京小米科技有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1