现在需要做一个搜索的关键字提示,例如有如下关键字
长大
输入cd/changda/zd/z大 等提示 长大
我现在的做法是将关键字词库按照拼音+声母的的混合组合 如
长大 拆分拼音为 cd/changda/changd/zd/zhangda/zhangd/zd/zda 等
输入的匹配 z大的时候 我全部转换为拼音得到 zda 然后得到关键字长大
再判断输入的有汉字的情况 通过正则 替换拼音部分 判断提示结果是否匹配
存在问题:
每个词语拆分成拼音 存在至少 2的汉字个数次方 结果,这个还是不包括多音字的情况
各位大神有什么好的算法没
同不会。。感觉你做的不像是搜索提示,而是输入法啊。。。
搜索提示应该根据搜索关键词的匹配度,搜的多的那种吧。
其实用不着那么多组合,只要关键的全拼和声母两种(多音情形就增加两个)就可以了, 如 cd/changda/zd/zhangda
数据库中这样存储。用户输入时假如只输入到 zhangd,你的select语句的where条件中用 子串查找函数 来找 子串出现位置>=0 的(即你的拼音存储字段包含用户所输入的内容)记录即可。
利用数据库的查询优势,制作输入法也会变得简单。但你现在这样,就没利用好它的简便之处了。