寻找ColdFusion或Java街道地址解析器

时间:2016-03-31 19:21:33

标签: coldfusion

我找到了C#& Perl库看起来很适合街道地址解析。

https://usaddress.codeplex.com/

http://search.cpan.org/~timb/Geo-StreetAddress-US-1.04/US.pm

是否存在ColdFusion代码 - 或者可以从CF运行以执行相同的工作?

3 个答案:

答案 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文件,并返回带有原始提交数据的附加列的同一文件。

https://smartystreets.com/docs/smartylist/command-line-tool

答案 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>