iOS系统通讯录应用的姓名拼音自动补全是如何实现的?

JoeMartini
  • 162

如下图,在系统通讯录编辑联系人时,如果添加了姓氏拼音活着名字拼音字段,编辑姓名内容时会自动根据汉字补全拼音,而且除了少部分多音字,还都正确标注了音标。
图片描述
请问这个功能是如何实现的?有没有可供调用的API?
如果想要自己实现这个功能,有什么可行的方法么?

回复
阅读 6.9k
3 个回答

除了完整的hash映射之外还真没什么好方法。。。

atucomplete
  • -1
新手上路,请多包涵

图片描述

搜索框对一个网站信息传送非常重要,简直就是个跨空间的传送门!
可是一个孤零零、没有任何提示的搜索框,反而给用户带来了无助感:很多时候用户不知道要输入些什么

为什么不能像baidu、淘宝、google那样,给搜索框添加一个自动提示(自动补全)功能呢,
对用户而言,可以有效降低输入成本,获得更多提示,快速了解网站的优质资源
对站长而言,可以优先推送网站的优质关键信息,等于多了一个广告位,更多的展示网站优先推荐的内容。

最近做了一个搜索项目,
发现很多用户会偷懒,直接输入拼音、拼音首字母、某个词汇去进行搜索,
那么在这种情况下,
需要为网站的搜索框安装一个类似百度、google那样的搜索提示、补全功能。
要求系统能快速响应用户的搜索需求,将拼音转换成相应的汉字词组去数据库检索相关的对象信息,将搜索结果展现给用户;
同时还发现,不同的用户对用同一个词条(标题)的提示排序顺序,有不同要求,
比如用户输入jd,高校图书馆用户希望《基督山伯爵》排在前面,《京东疯狂大减价》(我YY的)排在后面,
如果是电商用户,恐怕正好相反,对电商而言,不同销售季节,希望搜索提示出词条的排序也是不同的。

我发现在网上找个关于搜索框(input标签)自动提示的JS插件很容易,一大堆供你挑选,
但是,要想实现拼音、拼音首字母匹配、模糊匹配、智能容错、自定义提示词条自主排序等等这些功能,
是非常琐碎非常麻烦的,
更麻烦的是,我的数据在50万条左右,要想前端用户输入之后有较快(延时小于100ms)的响应,
还需要在前端加一层cache,memocache 、redis试了个遍。

网上的智能提示JS插件,都仅仅是一个前端界面,要实现自动提示,最大困难的是后端实现
92find做一个这样的JS插件:
把前面提到那些功能都封装起来,放在一台云服务器上,
开发者每次需要使用自动提示这个功能时,
只需准备好要提示的词条列表或者标题列表,及其排序的优先级,
向云服务器提交这些数据,服务自动生成前面提到的各种索引(前缀、拼音、容错),
并且自动分发到一个cache中,
开发者只需在自己的H5页面(或者普通HTML页面)中引用一行JS代码,
就可以通过跨域的方式使用自动提示的数据了,
不再需要配置什么数据库,也不需要写一行后台的java/php代码
只需5分钟(是的,是5分钟)和一个txt文本,
自己的搜索框提示功能就可以上线了,而且同baidu、淘宝一样强大。
我把这个功能安装在了国内几家211、985大学的网站上

项目网站www.92find.com

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏