用PHP实现自动拼音完成功能

前段时间想到给我们的音乐网站的搜索框加上这个功能,就是用户只要输入要搜索的歌曲或者歌手的名字的完整或部分拼音就可以了,比如搜索‘光良’,可以输入(不区分大小写)

GuangLiang
GL
GuangL
GLiang

这样比输入汉字名字有几个好处,一个是这样可以大大加快输入的速度,例如GL只有两个字母,肯定比输入中文的‘光良’要快,另一个是可以避免切换到中文输入法,也是某种程度上的加快输入速度。

实现起来不是很复杂,原理就是先把所有需要被查询的中文名字都转换成拼音并存储起来,根据用户输入的拼音进行所有可能的匹配,比如用户输入’GuangLiang’,根据汉语拼音的规则,可能的切分有36种,例如,

gu ang li ang
gua n g lia n g
guan g li ang
guang lia n g
guang liang
...

当然其中很多是找不到对应的汉字名字的,所以最后的搜索结果是相当有限的。

另外需要加上的功能就是根据用户的点击情况来对搜索结果排名,为了用户的方便,我们当然希望点击概率越高的排的越靠前,比如输入GL查找‘光良’,结果是

光磊
光良
郭力行
高凌风
高林生
高隆

在这个情况下,根据目前的情况应该是‘光良’排第一吧,哈哈。

开始的时候用VB6写了一个版本,后面才移植到PHP上,下面是这个测试程序的链接,因为用的Ajax的xmlHttpObject,所以IE和Firefox都没问题。
http://billhao.3322.org/py_page.php

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s