首页 新闻 会员 周边

同音字搜索方法解决方案

0
悬赏园豆:100 [已解决问题] 解决于 2010-05-07 08:29

我再页面上给用户留了一个文本,让用户输入需要搜索的信息。我现在的做法是将用户的输入结果获取后,和数据库中相应的字段做 like ‘ % ’比较查询。 这样做只能满足字体相同的字符。如果我希望和这个字的同音字一起显示出来要如果得做数据库的修改和程序上的改进,谢谢各位了!

 

举个例子:用户输入一个 “你好” 在数据库中的数据有 你好和拟好 我要如果做查询才能将这两天数据都显示出来?

da胖小子的主页 da胖小子 | 初学一级 | 园豆:19
提问于:2010-05-04 16:17
< >
分享
最佳答案
0

要用全文索引才行,分词时同时分出汉语拼音,搜索时根据中文和汉语拼音同时匹配。

可以用我搞的开源全文搜索数据库项目 hubble.net 来实现。你可以到 博客园的搜索引擎小组去讨论,或访问我的博客。

小组地址:

http://space.cnblogs.com/group/search/

收获园豆:80
eaglet | 专家六级 |园豆:17139 | 2010-05-05 12:29
谢谢你的解答!我还有一个小小的疑问。就是不知道你推荐的这个 hubble.net能不能查找出来平翘舌的汉字。例如:上海的拼音是Shanghai 如果我输入上海后希望也可以搜索到 桑还/桑海 拼音是 sanghai 这样的结果!
da胖小子 | 园豆:19 (初学一级) | 2010-05-05 21:33
@da胖小子: 可以的,分词时将这种拼音也同时输出出来就可以了。
eaglet | 园豆:17139 (专家六级) | 2010-05-07 12:45
其他回答(3)
0

可以采用增加一个字段的方法来解决,增加一个拼音的字段,当一条信息Insert成功后,同时用程序把它的拼音组合形式也添加到数据库里,这样你在查的时候就可以加上or条件,也可以设置让你好优先于拟好。

 

注:不建议使用like来查询,会引起全表扫描。可以使用全文索引。

收获园豆:20
Astar | 园豆:40805 (高人七级) | 2010-05-04 16:38
全文索引是什么意思!请问有什么相关的介绍或文章吗!
支持(0) 反对(0) da胖小子 | 园豆:19 (初学一级) | 2010-05-05 21:27
0

貌似可以使用lences吧,把数据库中的字段做索引,然后再查询的时候度索引就好了。应该可以解决。弱弱的回下

小毛驴 | 园豆:275 (菜鸟二级) | 2010-05-04 22:17
0

我没做过,应该要有个同音字词典

映射同音字信息,用户输入根据这个字典查询相应结果集,再用LIKE 去匹配-。

clound | 园豆:481 (菜鸟二级) | 2010-05-05 00:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册