乐清网站网站建设,svg图片做网站背景,合肥网络推广,wordpress后台系统项目中的源代码在我的GitHub#xff1a;https://github.com/weitw/address-analyzer 先看效果#xff1a; 如上图#xff0c;address数输入的地址#xff0c;Address对象是解析后的地址。可以支持逆推上一级#xff0c;且支持地址白话解析。
一、项目介绍
1、解析规则 …项目中的源代码在我的GitHubhttps://github.com/weitw/address-analyzer 先看效果 如上图address数输入的地址Address对象是解析后的地址。可以支持逆推上一级且支持地址白话解析。
一、项目介绍
1、解析规则 将一个用户输入的地址解析成省、市、区、详细地址的形式。 如果用户输入的不是标准的地址则需要推测标准地址。例如用户输入镇江市句容市崇明西路与玉清路交叉路口西侧(玉清小区)没有输入省但是需要根据镇江市推测出是江苏省的。 由于直辖市比较特殊所以代码中默认给直辖市增加一个“xx城区”作为市。例如北京市朝阳区可以变成北京市北京城区朝阳区。这个可以配置。 这里面的110000就是北京市的代码给其增加一个子级即可。这里也可以根据自己项目的要求去修改比如改成北京辖区等。 用户输入的非完整的省市区需要解析成完整的。例如内蒙古自治区大家的习惯可能是直接说内蒙古或者内蒙所以需要有一个模糊匹配的规则。再比如江苏省南京市雨花台区用户可能输入的是南京雨花台此时就需要将南京解析成南京市雨花台解析成雨花台区并推算出是江苏省。 所以大致的一个规则就是对于常规的xx省xxx市的会生成对应的白话集合。例如江苏省常用的白话集合就是江苏省或者江苏。南京市常用的白话就是南京市、南京。这种规则能处理大部分的地址。但是对于特殊的地址还是需要特殊处理的。 例如内蒙古自治区常用的白话集合是内蒙古自治区、内蒙古、内蒙。所以还增加了一个特殊地址白话JSON文件vernacularProvinceCityCounty.json 。这里只列举了一部分如果遇到其他特殊的地址在这个地方加上即可。
2、关于性能
解析时会读取address.json文件并根据省市区的关系构建相应的map集合。如果频繁的去读取address.json文件肯定会消耗不小的资源的所以可以一次读取放到缓存中下次要解析时直接从内存中拿出需要的数据即可。代码中只是使用类的静态属性并采用单例的方式确保类只会加载一次保证address.json文件只会读取一次。
实际应用时可以将数据放到Redis中。
二、测试案例
如下是测试案例
测试地址以下地址都从地图上随机挑选的如果地址有涉及到个人隐私请联系我删除 贵州省七星关区何官屯镇刘家村2312号 七星关区何官屯镇刘家村2312号 福建省长汀县汀洲镇中心坝竹区8号 福建长汀汀洲镇中心坝竹区8号 毕节市何官屯镇刘家村11号 内蒙古自治区锡林郭勒盟二连浩特市肯特街南、建设路东 锡林郭勒盟二连浩特市肯特街南、建设路东 内蒙锡林郭勒盟二连浩特市肯特街南、建设路东 河北省廊坊市大城县xxxxxxxxxx 镇江市句容市崇明西路与玉清路交叉路口西侧(玉清小区) 北京朝阳方恒国际中心A座2601号 三、使用方法及注意事项
1、使用方法 clone项目到你的环境 使用AddressAnalyzer.analyzer.addressResolution(address)address就是需要解析的源地址。得到的是一个包含省市区的对象。