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

求在这个程序中的最佳算法
在数据库中有 有字段:邮编号 省份 城市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开源的搜索引擎,里面有可以中文分词