2009-02-05 25 views
24

कहां है, मैं एक अच्छा टूल ढूंढ रहा हूं जो एक पूर्ण मेलिंग पता ले सकता है, जो डिस्प्ले के लिए स्वरूपित या मेलिंग लेबल के साथ उपयोग किया जा सकता है, और इसे एक संरचित ऑब्जेक्ट में परिवर्तित कर सकता है।एक अच्छा पता पार्सर

उदाहरण के लिए

तो:

// Start with a formatted address in a single string 
string f = "18698 E. Main Street\r\nBig Town, AZ, 86011"; 

// Parse into address 
Address addr = new Address(f); 

addr.Street; // 18698 E. Main Street 
addr.Locality; // Big Town 
addr.Region; // AZ 
addr.PostalCode; // 86011 

अब मैं रेगुलर एक्सप्रेशन से का उपयोग कर ऐसा कर सकता है। लेकिन मुश्किल हिस्सा दुनिया में किसी भी पते को संभालने के लिए पर्याप्त सामान्य रख रहा है!

मुझे यकीन है कि वहां कुछ ऐसा होना है जो इसे कर सकता है।

यदि किसी ने देखा, तो यह वास्तव में opensocial.address ऑब्जेक्ट का प्रारूप है।

+1

जब आप मिश्रण में अंतरराष्ट्रीय पते लाते हैं तो यह एक कठिन समस्या है। मुझे पता है कि [जापानी पते] (http://www.japan-guide.com/e/e2224.html) आपके द्वारा प्रस्तुत की गई सड़क 1/सड़क 2/शहर/राज्य/ज़िप मॉडल का पालन न करें। वे सड़क, ब्लॉक और इमारत में जाते हैं जो कि सामान्य अमेरिकी पते से अलग है। यूरोप में अन्य पते भी अलग हैं। वह रेगेक्स बेहतर यूनिकोड था, क्योंकि हमारा वर्णमाला पर्याप्त नहीं होगा। एक आसान समस्या नहीं, आईएमओ। – duffymo

+0

इस का डुप्पी: http://stackoverflow.com/questions/16413/parse-usable-street-address-city-state-zip-from-a-string मुझे लगता है कि आप यू.एस. पते का मतलब है। – danieltalsky

उत्तर

2

आप Experian Address Verification आज़मा सकते हैं। क्या इसमें समस्याएं हैं लेकिन विज्ञापित के रूप में बहुत अधिक काम करता है।

3

चूंकि @ डफिमो ने कहा कि कोई छोटा समाधान नहीं है, तो अगली सबसे अच्छी बात डिजाइन पर पुनर्विचार करना हो सकता है। यदि यह उपयोगकर्ता का फॉर्म है, तो समझौता करें और उपयोगकर्ता को इसे भरने दें। यदि आप डेटा को पीछे से पार्स कर रहे हैं, तो कुछ मानदंडों (देश अमेरिका है) के आधार पर पर्स पते के लिए एक बहुत सख्त रेगेक्स का उपयोग करें। फिर उन पर एक दूसरा पास करें जो छोड़े गए हैं और इसी तरह से। मैंने यह दृष्टिकोण लिया है और यह एकमात्र विश्वसनीय दृष्टिकोण है।

सामान्य रेगेक्स दृष्टिकोण लेने के साथ एक और डिज़ाइन समस्या यह है कि यह खराब पते के लिए झूठी सकारात्मक उत्पन्न करेगा। यदि आप इन लोगों को घोंघा मेल भेज रहे हैं, तो यह उछाल खत्म हो जाएगा और आपके हाथों में कौन सा काम वापस आ जाएगा या गलत पते पर मेल भेजना जारी रखने के लिए आपके हाथों पर अधिक काम होगा।

24

Googlemaps API इसके लिए बहुत अच्छा काम करता है। उदाहरण के लिए, मान लीजिए कि आपको स्ट्रिंग "120 डब्ल्यू 45 सेंट एनईसीसी" दिया गया है। इसलिए जैसे GOOGLEMAPS एपीआई में इसे पारित: http://maps.google.com/maps/geo?q=120+w+45+st+nyc और आप इस प्रतिक्रिया मिल:

{ 
    "name": "120 w 45 st nyc", 
    "Status": { 
    "code": 200, 
    "request": "geocode" 
    }, 
    "Placemark": [ { 
    "id": "p1", 
    "address": "120 W 45th St, New York, NY 10036, USA", 
    "AddressDetails": {"Country": {"CountryNameCode": "US","CountryName": "USA","AdministrativeArea": {"AdministrativeAreaName": "NY","Locality": {"LocalityName": "New York","Thoroughfare":{"ThoroughfareName": "120 W 45th St"},"PostalCode": {"PostalCodeNumber": "10036"}}}},"Accuracy": 8}, 
    "ExtendedData": { 
     "LatLonBox": { 
     "north": 40.7603883, 
     "south": 40.7540931, 
     "east": -73.9807141, 
     "west": -73.9870093 
     } 
    }, 
    "Point": { 
     "coordinates": [ -73.9838617, 40.7572407, 0 ] 
    } 
    } ] 
} 
+9

मुझे लगता है कि मैं जानना चाहता हूं कि Google यह कैसे करता है। –

+0

बस चेतावनी दीजिये कि आपको एक से अधिक परिणाम मिल सकते हैं। यदि आप 'सामान्यीकरण' उद्देश्यों के लिए करते हैं तो आपको परिणाम को विफल करना होगा। –

+3

हालांकि प्रति दिन लगभग 15,000 अनुरोधों की सीमा है, यह आश्चर्यजनक है कि यह कितनी तेजी से काम करता है। तो सम्मानजनक और सावधान रहें और उपयोग की शर्तों की जांच करें http://econym.org.uk/gmap/geomulti.htm –

3

मैं RecogniContact हाल ही में की कोशिश की। यह एक विंडोज COM घटक है जो अमेरिका और यूरोपीय पते को पार करता है। आप इसे वेबसाइट से जांच सकते हैं।

http://www.loquisoft.com/index.php?page=8

0

कनाडा के पतों के लिए, मैं एक Street Perfect कहा जाता इस्तेमाल किया है। हमें अपने उद्देश्य के लिए पुन: प्रयोज्य बनाने के लिए .net में c++ कोड को लपेटना पड़ा, लेकिन यह काफी आसान था।

3

जैसा कि उल्लेख किया गया है, यह एक मामूली समस्या नहीं है। सबसे बड़े मुद्दों में से एक - अंतरराष्ट्रीय पते के अलावा - यह है कि पते के लिए कोई मानक प्रारूप नहीं है और तथ्य यह है कि कोई पता नहीं बता सकता है कि यह अच्छी तरह से गठित है, यानी यह क्रेडिट कार्ड नंबर की तरह स्वयं प्रमाणित नहीं है ।

इस वजह से, आपको यह सुनिश्चित करने के लिए कि सत्य असली है, आपको सत्य के बाहरी स्रोत पर भरोसा करना होगा। यह वह जगह है जहां एक पता सत्यापन सेवा मिश्रण में आता है। आपकी व्यावसायिक आवश्यकताओं और आवेदन आवश्यकताओं के आधार पर, आप अपनी पता सूची के एक बार "बैच" स्क्रब, या शायद रीयलटाइम/लाइव एड्रेस सत्यापन सेवा देख सकते हैं। कई अच्छे प्रदाता (जो लागत में भिन्न होते हैं) हैं जो आसानी से इस समस्या को हल कर सकते हैं।

मुझे यह उल्लेख करना चाहिए कि मैं SmartyStreets के संस्थापक हूं। हम CASS-certified address verification करते हैं। हम आपके अपरिवर्तित/कच्चे पते ले लेंगे और उन्हें उन पतेों में बदल देंगे जिन्हें साफ़, मानकीकृत और सत्यापित/पुष्टि की गई है। आपकी सूची के आकार के आधार पर, लागत आमतौर पर केवल कुछ डॉलर होती है और टर्नअराउंड समय लगभग तुरंत होता है - आमतौर पर कुछ मिनट।

6

आप देख रहे हैं एक सरल उपाय के साथ एक पते पार्सर के लिए, इस प्रयास करें:

http://usaddress.codeplex.com/

अच्छा: 1. कोई डेटाबेस की आवश्यकता 2. कोई इंटरनेट देखने के लिए आवश्यक 3. सुंदर सटीक

बुरा: अगर यह वास्तविक पता 2. केवल अमेरिका को संबोधित 3. सी # में, .NET 3.5 या

0 से ऊपर का उपयोग के लिए काम करता है 1. इस बात की पुष्टि नहीं कर सकते
+0

चेतावनी का त्वरित शब्द नहीं है - ऐसा लगता है कि मैं चाहता हूं कि मैं चाहता हूं ... जीपीएल भाग को छोड़कर। हम अभी भी हमारे कोड वितरित नहीं करते हैं। – viggity