views:

1280

answers:

5

Somewhat related to this question, but in the absence of any answer about QuickBooks specifically, does anyone knows of an address parser for Java. Something that can take unstructured address information and parse out the address line 1, 2 and city state postal code and country?

+4  A: 

I do know that the Google Maps web service is great at doing this. So, if you want to use that, you could save a lot of effort.

The real issue here is that you need a worldwide database of city/country/province names to effectively parse UNSTRUCTURED addresses.

Here is how I build a URL for use by the Google Maps API in C#:

string url = "http://maps.google.com/maps/geo?key=" + HttpUtility.UrlEncode(this.apiKey) + "&sensor=false&output=xml&oe=utf8&q=" + HttpUtility.UrlEncode(location);
John Gietzen
That is a great idea, thanks!
Yishai
Careful with this. The Google TOS prohibits automated queries.
Dave Jarvis
+3  A: 

Might want to read this Stack Overflow question: "Parse usable Street Address, City, State, Zip from a string". No actual Java code to do the job (just some VB), but there is some discussion of the problem and more info on the alternative John Gietzen mentions, of using a web service to interpret it for you.

Matt G
+1  A: 

See www.address-parser.com, they offer a web service for parsing international addresses.

We Know
Great find, thanks! I wish they offered a Java API (for practical reasons a web service would not work well in this scenario).
Yishai
For a commercial product, take a look at http://www.melissadata.com. They offer a Java api which I haven't tested out. It is JNI a wrapper around their C based product.
Dave
+1  A: 

The Mural project has an address parser: https://mural.dev.java.net/. I haven't figured out how to exract it from the larger Mural engine, but it does work based on some very limited tests.

Dave
+1  A: 

The SourceForge JGeocoder has an address parser that you may find useful. See http://jgeocoder.sourceforge.net/parser.html.

Guy Lancaster
Cool, thanks! .
Yishai