我找到了C#& Perl库看起来很适合街道地址解析。
https://usaddress.codeplex.com/
http://search.cpan.org/~timb/Geo-StreetAddress-US-1.04/US.pm
是否存在ColdFusion代码 - 或者可以从CF运行以执行相同的工作?
答案 0 :(得分:0)
如果你需要解析&验证,您可以使用SmartyStreets.com LiveAddress API。 2011年的ColdFusion CFC可用于连接,验证地址并返回该地址的更多基于位置的数据的JSON结构。
http://smartystreets.riaforge.org/
SmartyStreets还有javascript地址自动完成API,因此您可以将其包含在任何基于Web的表单中,以确保在将传入地址保存到后端数据库之前验证传入地址(包括地址部分的识别和完全分离) )。
查看功能......它比任何离线库更强大:
https://smartystreets.com/features
唯一的缺点是付费服务,每月只能免费处理250个地址:
https://smartystreets.com/free-address-verification
除了使用CFC之外,我还为SmartyStreet" Smartylist"使用单独的包装器。 (命令行工具)。它基本上传了一个CSV文件,并返回带有原始提交数据的附加列的同一文件。
答案 1 :(得分:0)
“Address Cleaner”是一个使用JGeoCoder的ColdFusion ColdBox插件。
https://github.com/angelseye/Address-Cleaner
http://jgeocoder.sourceforge.net/
安装JAR文件后,可以使用以下方法调用CFC,它将返回与以下键CITY, LINE2, NUMBER, PREDIR, STATE, STREET, TYPE, ZIP
的匹配项。 (注意:如果您不使用Coldbox框架,则需要修改CFC。):
clearAddressString = addressCleaner.cleanAddress(FullAddressString);
addressStruct = addressCleaner.getAddressStruct(FullAddressString);
ColdFusion可以使用另一个java选项是“International Address Parser”。 (可以使用多个国家/地区包,但没有列出价格。)
http://www.address-parser.net/product-java.php
http://address-parser.net/documentation/documentation.php#java
答案 2 :(得分:-1)
我已经写了一个地址和zip的初步解析器。这是一个可以帮助您入门的代码段(https://bitbucket.org/snippets/mrrobwad/KR9Mg):
<cfset loc.SOURCETEXT = "123 ABC Street, Any Town, MA 12345">
<cfset loc.array_zip_code = REMatchNoCase("[-:.\s][0-9]{5}([-][0-9]{4})?",loc.SOURCETEXT)>
<cfif ArrayLen(loc.array_zip_code) GT 0>
<cfset loc.ZIP = REReplaceNoCase(loc.array_zip_code[1],"[-:.\s]","","All")>
<b>ZIP:</b>
<cfdump var="#loc.ZIP#">
</cfif>
<br><br>
<cfset loc.street_types = "STREET|ST|DRIVE|DR|AVENUE|AVE|ROAD|RD|LOOP|COURT|CT|CIR|CIRCLE|LANE|LN|BOULEVARD|BLVD">
<cfset loc.array_street_type = REMatchNoCase("(\s)+(#loc.street_types#)[^a-zA-Z]",loc.SOURCETEXT)>
<cfif ArrayLen(loc.array_street_type) GT 0>
<cfset loc.street_address_trimmed = Left(loc.SOURCETEXT,FindNoCase(loc.array_street_type[1],loc.SOURCETEXT)+Len(loc.array_street_type[1]))>
<cfset loc.array_street_address = REMatchNoCase("(\d{1,5})+(\s([a-zA-Z])+)+",loc.street_address_trimmed)>
<cfif ArrayLen(loc.array_street_address) GT 0>
<cfset loc.ADDRESS = loc.array_street_address[1]>
<b>ADDRESS:</b>
<cfdump var="#loc.ADDRESS#">
</cfif>
</cfif>