日期:2014-05-17  浏览次数:20457 次

求在这个程序(或者数据库语句)中的最佳算法[
在数据库中有 有字段:邮编号 省份 城市1 城市2 区县1 区县2  
如表所示

序号 邮编号 省份 城市1 城市2 区县1 区县2  
-------------------------------------------------------
1 030100 山西省 太原市 太原市 阳曲县 阳曲县(黄寨镇) 
2 350011 福建省 福州市 福州市 晋安区 晋安区  
3 030200 山西省 太原市 太原市 古交市 古交市  
4 030025 山西省 太原市 太原市 晋源区 晋源区  
5 056800 河北省 邯郸市 邯郸市 魏县 魏县(魏城镇)  
6 057750 河北省 邯郸市 邯郸市 馆陶县 馆陶县(馆陶镇)  
7 057650 河北省 邯郸市 邯郸市 广平县 广平县(广平镇)  
8 057350 河北省 邯郸市 邯郸市 鸡泽县 鸡泽县(鸡泽镇)  

我想要的结果就是:
  当我输入一个地址:“福州市晋安区珠宝路2号AA大厦” 就能得给出 邮编号是:350011[color=#FF0000][/color]
有时地址是不全的,问如何得出最匹配的邮编号 

请问在程序中用什么算法最快,是在程序上做,还是在SQL查询语句上处理?

------解决方案--------------------
你这个模糊匹配也太模糊了点
------解决方案--------------------
不现实,也不科学,用户的输入是不规范的,倒是可以在程序里面做成百度搜索提示效果。
------解决方案--------------------
要是能符合如下的还好做点:
福州市晋安区或者山西省古交市,且区和市和县,镇之类的字眼不能少
不然一个上海福建路古交大厦88号广平分部营业厅
起码会让你的sql模糊一阵了
------解决方案--------------------
这也太能扯了吧
case when 试试

------解决方案--------------------
考虑程序来实现分词搜索,sql 干着太蹩脚了。
------解决方案--------------------
在牛的程序也没有智能到这种地步。你如果无法控制客户端的输入,那么只能是大量的报错。人工智能还没实现。

你到百度去搜索,如果输入模糊,不也是经常出来N个结果吗?百度后面的输入分析,代码有几万行。

建议你跟客户做个妥协,稍微分下段。比如省、市、区。这三个用不同的变量,或者中间的间隔你程序能控制。
------解决方案--------------------
搜索引擎适合来做这个。不太懂。帮顶。
------解决方案--------------------
省份城市用选择的来,其实这个js脚步实现最好了!