美文网首页
T9搜索匹配排序

T9搜索匹配排序

作者: 平头说人生 | 来源:发表于2018-05-23 19:05 被阅读15次

    智能拨号的搜索排序需求

    搜索类型的排序:联系人姓名匹配 > 联系人号码匹配 > 服务号姓名匹配 > 服务号号码匹配 联系人、

     联系人,服务号码的号码搜索匹配介绍:

      1.对于匹配到的号码,如果他们的号码长度一样且匹配的数字位置也一样,则按照联系人或者服务号的姓名来进行排序,

    如林正( 18559037475)排在黄金勇(18678239172)的前面

    2.匹配到的数字越靠前(左边),则号码的排序也越靠前,如18559037475排在13818342134的前面


     解决方案梳理

    1 排序问题直接修改Comparator的匹配规则就可以

    2 目前有的可匹配项有 mSearchByType : 匹配类型 mMatchStartIndex : 匹配的起始下标 mMatchLength : 匹配的长度 mMatchKeywords : 匹配到的内容

    3 匹配规则是

    0 联系人姓名匹配 > 联系人号码匹配 > 服务号姓名匹配 > 服务号号码匹配

    1 全拼的排序顺序是:数字名 > 中文名 > 英文名(通过matchKeyWords来判断) (服务号的匹配是V6平台原来逻辑,不需要更改)

        1.1 如果一个姓名匹配,一个号码匹配则姓名匹配在前(根据searchType判断)

        1.2 如果都是姓名匹配或者号码匹配则执行2中逻辑 2 全拼>首字母全拼>混拼搜索

        2.1 如果都是号码匹配,查看匹配长度肯定一样,直接查看匹配起始下标(根据matchStartIndex判断)

        2.2 如果都是号码匹配,并且匹配长度一样,匹配起始下标越小越考前;

        2.3 如果都是号码匹配,并且匹配长度一样,并且匹配起始下标一样,返回0, 按照原来顺序(即名字字母先后顺序) ################ 暂时将全拼和混合全拼都当作一种匹配形式:全拼

        2.4 如果都是名字匹配,查看是否全拼(mMatchKeywords 和name 是否equal)

        2.5 如果都是名字匹配,并且都是全拼,返回0,按照原来顺序(即名字字母先后顺序)(一人多个号码)

        2.6 如果都是名字匹配,查看是否混合全拼(matchLength是否和name的length一样 )

        2.7 如果都是名字匹配,并且都是混合全拼,返回0, 按照原来顺序(即名字字母先后顺序) ################ 暂时将全拼和混合全拼都当作一种匹配形式:全拼

        2.8 最后就是混拼了,匹配个数最多在前,最先匹配的在前,还无法分辨返回0(即名字字母先后顺序)

    相关文章

      网友评论

          本文标题:T9搜索匹配排序

          本文链接:https://www.haomeiwen.com/subject/cjldjftx.html