2011-12-29 11 views
3

私は2つのAPIとやりとりしています。これらのAPIは、全く異なった形式のアドレスを返します。一つは、「6 Avenue」のようなアドレスを返し、別のリターン「6 Ave.住所の正規化を行うにはどうすればよいですか?

私はNormalic宝石を使用して調査したが、何らかの理由で私のアドレスの多くは、不正な形式またはブランク返されます:「6 Avenue」は「Ave.」として返されます。

私もGeoCoderを試しましたが、GoogleやYahooなどの各APIはクォータを設定しています。開発中の私のアプリをテストする数時間後、これらのクォータは期限切れになります。これは明らかに生産ではありません。

"6 Ave." == "6 Avenue"というようなことをさせるライブラリがあれば素晴らしいことでしょう。

+0

6th Aveを意味しますか?ノーマルはそれを処理する必要があります。それは通りの名前が不足しているように書かれているように見えます。 –

答えて

4

米国の住所については、USPSはan address apiを提供しています。私の理解は、料金はかかりませんが、あなたの目的は、電子商取引のウェブサイトで入力したアドレスを検証するためのものである必要があります。

データベースをクリーニングする場合、USPSはメーラ用の(高価な)サービスプロバイダの1つにあなたを送ります。

1

ルビーStreetAddress宝石があなたのためにこれの世話をする必要があります。https://rubygems.org/gems/StreetAddress

ここにあなたのケースのためのいくつかの使用例です:あなたは、解析方法をあなたのAPIアドレスの両方を実行するのであれば、

pry(main)> StreetAddress::US.parse("42 6 Ave., Washington, DC") 
=> 42 6 Ave, Washington, DC 
pry(main)> StreetAddress::US.parse("42 6 Avenue, Washington, DC") 
=> 42 6 Ave, Washington, DC 

それはあなたのために両方を標準化し、より多くの反射、自転車、ピザ消費のためにあなたの人生を解放する必要があります。

+3

パーサーの宝石を探している人には注意が必要です。USPSやMelissaDataなどのオンラインAPIにアクセスしない限り、100%の解決策や80%の解決策を見つけることはできません。そのうちの私は試しました)。たとえば、StreetAddressはユニット/アパートメント/スイート番号をうまく処理せず、C/O、Attn:またはPOボックスが提供されている場合は完全に破棄されます。不正な入力にはより耐性があるが、それでもなお満足できるものではないため、ノーマルに着手した。 –

関連する問題