当前位置: 代码迷 >> Java Web开发 >> 求在这个程序中的绝佳算法
  详细解决方案

求在这个程序中的绝佳算法

热度:1675   发布时间:2013-02-25 21:10:04.0
求在这个程序中的最佳算法
在数据库中有 有字段:邮编号 省份 城市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
  有时地址是不全的,问如何得出最匹配的邮编号 

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

------解决方案--------------------------------------------------------
这张表如果是相对静态的,可以加载到缓存中,然后前端输入地址后,用java 去遍历搜索!

比如将 前端输入的地址 按 “省” “市” “县” “区” “路” 等等顺序遍历!
------解决方案--------------------------------------------------------
难度不小,建议如下:
1、将每行的字段值合并起来作为一个新的字段,比如第一行就是:
山西省太原市阳曲县
2、找开源搜索引擎,对合并后的字段做全文检索;
3、将整个地址扔给搜索引擎,找出匹配度最高的那行。
------解决方案--------------------------------------------------------
省,市 用2个下拉框 并且联动起来

结果 邮编 有这个2个限定够了
------解决方案--------------------------------------------------------
探讨

省,市 用2个下拉框 并且联动起来

结果 邮编 有这个2个限定够了

------解决方案--------------------------------------------------------
Lucene,java开源的搜索引擎,里面有可以中文分词
  相关解决方案