जब मैंने एड्रेस वेरिफिकेशन कंपनी के लिए काम किया तो मुझे यह सवाल बहुत अच्छा लगा। मैं इसका उत्तर यहाँ पोस्ट कर रहा हूँ ताकि यह उन प्रोग्रामरों के लिए और अधिक सुलभ हो सके जो एक ही प्रश्न के साथ खोज रहे हैं। मैं जिस कंपनी में था, उसके पास अरबों के पते थे, और हमने इस प्रक्रिया में बहुत कुछ सीखा।
पहले, हमें पतों के बारे में कुछ बातें समझने की जरूरत है।
पते नियमित नहीं हैं
इसका मतलब है कि नियमित अभिव्यक्ति बाहर हैं। मैंने यह सब देखा है, साधारण नियमित अभिव्यक्तियों से जो कि एक बहुत ही विशिष्ट प्रारूप में पते से मेल खाते हैं, इस के लिए:
/ \ S + (\ घ {2,5} \ s +) ([एक | p]?! मीटर \ ख) (([a-zA-जेड | \ s +] {1,5}) {1,2}) ([\ s |, |।] +) (([a-zA-जेड | \ s +] {1,30}) {1,4})? (अदालत | सीटी | सड़क | सेंट | ड्राइव | डॉ | लेन | ln | सड़क | वां | blvd) ([\ s |, | |;।]? +) (([a-zA-जेड | \ s +] {1,30}) {1,2}) ([ \ रों |, |।] +) \ ख (ए |? AL | एआर | AZ | सीए | सीओ | सीटी | डीसी | डे | FL | जीए | GU | HI | आइए | आईडी | आईएल | IN | केएस | KY | ला | एमए | एमडी | ME | एमआई | MN | एमओ | एमएस | मीट्रिक टन | एनसी | एन डी | NE | एनएच | न्यू जर्सी | समुद्री मील दूर | NV | न्यूयॉर्क | ओह | ठीक | या | पीए | आरआई | अनुसूचित जाति | एसडी | तमिलनाडु | TX | केन्द्र शासित प्रदेशों | वीए | छठी | वीटी | वाशिंगटन | WI | WV | WY) ([\ s |, |।] +) (\ s + \ घ {5}) ([\ s |, |।]? +) / i
... यह करने के लिए जहां 900+ लाइन-क्लास फ़ाइल मक्खी पर एक सुपरमैसिव रेगुलर एक्सप्रेशन उत्पन्न करती है, और भी अधिक मेल खाने के लिए। मैं इनकी अनुशंसा नहीं करता (उदाहरण के लिए, यहां उपरोक्त रेगेक्स का एक बेड़ा है, जो बहुत सारी गलतियाँ करता है )। यह काम करने के लिए एक आसान जादू फार्मूला नहीं है। सिद्धांत रूप में और द्वारा सिद्धांत, यह एक नियमित अभिव्यक्ति के साथ पतों का मिलान करने के लिए संभव नहीं है।
यूएसपीएस पब्लिकेशन 28 उन सभी पतों के कई स्वरूपों का दस्तावेज बनाता है जो उनके सभी कीवर्ड और वैरिएंट के साथ संभव हैं। सबसे खराब, पते अक्सर अस्पष्ट होते हैं। शब्दों का एक से अधिक अर्थ हो सकता है ("सेंट" "सेंट" या "स्ट्रीट" हो सकता है) और ऐसे शब्द हैं जो मुझे यकीन है कि उन्होंने आविष्कार किया था। (कौन जानता था कि "स्ट्रैटन" एक सड़क प्रत्यय था?)
आपको कुछ कोड की आवश्यकता होगी जो वास्तव में पते को समझते हैं, और यदि वह कोड मौजूद है, तो यह एक व्यापार रहस्य है। लेकिन अगर आप वास्तव में हैं तो आप अपना रोल खुद बना सकते हैं।
पते अप्रत्याशित आकार और आकार में आते हैं
यहाँ कुछ वंचित (लेकिन पूर्ण) पते दिए गए हैं:
1) 102 main street
Anytown, state
2) 400n 600e #2, 52173
3) p.o. #104 60203
यहां तक कि ये संभवतः मान्य हैं:
4) 829 LKSDFJlkjsdflkjsdljf Bkpw 12345
5) 205 1105 14 90210
जाहिर है, ये मानकीकृत नहीं हैं। विराम चिह्न और पंक्ति विराम की गारंटी नहीं है। यहाँ क्या हो रहा है:
नंबर 1 पूरा हो गया है क्योंकि इसमें सड़क का पता और शहर और राज्य शामिल हैं। उस जानकारी के साथ, पते की पर्याप्त पहचान है, और इसे "सुपुर्दगी" (कुछ मानकीकरण के साथ) माना जा सकता है।
नंबर 2 पूरा हो गया है क्योंकि इसमें एक सड़क का पता (द्वितीयक / यूनिट संख्या के साथ) और 5 अंकों का ज़िप कोड है, जो एक पते की पहचान करने के लिए पर्याप्त है।
नंबर 3 एक पूर्ण पोस्ट ऑफिस बॉक्स प्रारूप है, क्योंकि यह एक ज़िप कोड है।
नंबर 4 भी पूरा है क्योंकि ज़िप कोड अद्वितीय है , जिसका अर्थ है कि एक निजी संस्था या निगम ने उस पता स्थान को खरीदा है। एक अद्वितीय ज़िप कोड उच्च-मात्रा या केंद्रित वितरण स्थानों के लिए है। ज़िप कोड 12345 को संबोधित कुछ भी जनरल इलेक्ट्रिक में शेंक्टाडी, एनवाई में जाता है। यह उदाहरण विशेष रूप से किसी तक नहीं पहुंचेगा, लेकिन यूएसपीएस अभी भी इसे वितरित करने में सक्षम होगा।
नंबर 5 भी पूरा है, मानो या न मानो। बस उन नंबरों के साथ, सभी संभावित पतों के डेटाबेस के खिलाफ पार्स किए जाने पर पूरा पता खोजा जा सकता है। जब आप प्रत्येक घटक को एक घटक के रूप में देखते हैं, तो लापता दिशात्मक, माध्यमिक डिज़ाइनर और ज़िप + 4 कोड में भरना तुच्छ होता है। यहाँ यह कैसा दिखता है, पूरी तरह से विस्तारित और मानकीकृत है:
205 एन 1105 डब्ल्यू एप्ट 14
बेवर्ली हिल्स CA 90210-5221
पता डेटा आपका अपना नहीं है
अधिकांश देशों में जो लाइसेंस प्राप्त विक्रेताओं को आधिकारिक पता डेटा प्रदान करते हैं, पता डेटा स्वयं गवर्निंग एजेंसी के हैं। अमेरिका में, USPS पते के मालिक हैं। कनाडा पोस्ट, रॉयल मेल और अन्य लोगों के लिए भी यही सच है, हालांकि प्रत्येक देश स्वामित्व को थोड़ा अलग तरीके से लागू या परिभाषित करता है। यह जानना महत्वपूर्ण है, क्योंकि यह आमतौर पर एड्रेस डेटाबेस को रिवर्स-इंजीनियरिंग करने से मना करता है। आपको सावधान रहना होगा कि डेटा का अधिग्रहण, भंडारण और उपयोग कैसे करें।
Google मैप्स त्वरित पता सुधारों के लिए एक आम जाना है, लेकिन टीओएस बल्कि निषेधात्मक है; उदाहरण के लिए, आप बिना Google मानचित्र दिखाए, और केवल (जब तक आप भुगतान नहीं करते हैं) के लिए आप उनके डेटा या एपीआई का उपयोग नहीं कर सकते, और आप डेटा (अस्थायी कैशिंग को छोड़कर) संग्रहीत नहीं कर सकते। समझ में आता है। Google का डेटा दुनिया में सबसे अच्छा है। हालाँकि, Google मैप्स पते को सत्यापित नहीं करता है । यदि कोई पता मौजूद नहीं है, तो यह तब भी आपको दिखाएगा कि पता कहाँ होगा यदि यह मौजूद था (अपनी खुद की सड़क पर प्रयास करें; एक घर संख्या का उपयोग करें जो आपको पता है कि मौजूद नहीं है)। यह कभी-कभी उपयोगी होता है, लेकिन इसके बारे में जागरूक रहें।
Nominatim की उपयोग नीति समान रूप से सीमित है, विशेष रूप से उच्च मात्रा और व्यावसायिक उपयोग के लिए, और डेटा ज्यादातर मुक्त स्रोतों से तैयार किया गया है, इसलिए यह उतना ही बनाए नहीं रखा जाता है (जैसे कि खुली परियोजनाओं की प्रकृति) - हालांकि, यह अभी भी सूट कर सकता है आपकी ज़रूरतें। यह एक महान समुदाय द्वारा समर्थित है।
यूएसपीएस में स्वयं एक एपीआई है, लेकिन यह बहुत नीचे चला जाता है और न तो गारंटी के साथ आता है और न ही समर्थन करता है। इसका उपयोग करना कठिन भी हो सकता है। कुछ लोग इसका इस्तेमाल बिना किसी समस्या के करते हैं। लेकिन यह याद रखना आसान है कि यूएसपीएस के लिए आवश्यक है कि आप उनके एपीआई का उपयोग केवल उनके माध्यम से जहाज भेजने के पतों की पुष्टि के लिए करें।
लोगों को उम्मीद है कि पते कठिन होंगे
दुर्भाग्य से, हमने अपने समाज को जटिल होने वाले पतों की अपेक्षा करने के लिए वातानुकूलित किया है। इस बारे में इंटरनेट पर दर्जनों अच्छे यूएक्स लेख हैं, लेकिन तथ्य यह है, यदि आपके पास अलग-अलग क्षेत्रों के साथ एक पते का फॉर्म है, तो वही है जो उपयोगकर्ता अपेक्षा करते हैं, भले ही यह किनारे के पते के लिए कठिन हो, जो फिट नहीं होते हैं फ़ॉर्मेट की अपेक्षा की जा रही है, या हो सकता है कि फ़ॉर्म को ऐसे फ़ील्ड की आवश्यकता हो जो इसे नहीं करना चाहिए। या उपयोगकर्ताओं को पता नहीं है कि उनके पते का एक निश्चित हिस्सा कहां रखा जाए।
मैं इन दिनों चेकआउट फॉर्म के खराब यूएक्स के बारे में और आगे बढ़ सकता हूं, लेकिन इसके बजाय मैं सिर्फ इतना कहूंगा कि पते को एक ही क्षेत्र में जोड़ना एक स्वागत योग्य बदलाव होगा - लोग अपना पता टाइप करने में सक्षम होंगे कि वे कैसे फिट दिखते हैं , बल्कि अपने लंबे रूप का पता लगाने की कोशिश कर रहा है। हालाँकि, यह परिवर्तन अप्रत्याशित होगा और उपयोगकर्ताओं को पहले यह थोड़ा परेशान लग सकता है। बस उस के बारे में पता होना चाहिए।
संबोधन से पहले देश के मैदान को सामने रखकर इस दर्द को कम किया जा सकता है। जब वे पहले देश के क्षेत्र को भरते हैं, तो आप जानते हैं कि अपने फॉर्म को कैसे प्रदर्शित किया जाए। हो सकता है कि आपके पास एकल-फ़ील्ड यूएस पतों से निपटने का एक अच्छा तरीका है, इसलिए यदि वे संयुक्त राज्य का चयन करते हैं, तो आप अपने फॉर्म को एकल फ़ील्ड में कम कर सकते हैं, अन्यथा घटक फ़ील्ड दिखाएं। बस सोचने वाली बातें!
अब हम जानते हैं कि यह कठिन क्यों है; आप इसके बारे में क्या कर सकते हैं?
USPS विक्रेताओं को ग्राहकों को सत्यापित पते प्रदान करने के लिए CASS ™ प्रमाणन नामक एक प्रक्रिया के माध्यम से लाइसेंस प्रदान करता है। इन विक्रेताओं के पास यूएसपीएस डेटाबेस तक पहुंच है, मासिक अद्यतन किया गया है। उनके सॉफ़्टवेयर को प्रमाणित होने के लिए कठोर मानकों के अनुरूप होना चाहिए, और उन्हें अक्सर ऐसे सीमित शब्दों में समझौते की आवश्यकता नहीं होती है जैसा कि ऊपर चर्चा की गई है।
कई CASS- प्रमाणित कंपनियां हैं जो सूचियों की प्रक्रिया कर सकती हैं या एपीआई कर सकती हैं: मेलिसा डेटा, एक्सपेरिमेंट QAS और SmartyStreets कुछ नाम।
("विज्ञापन" के लिए फ्लैक मिलने के कारण मैंने इस बिंदु पर अपना जवाब छोटा कर दिया है। यह आपके लिए एक समाधान है जो आपके लिए काम करता है।)
सच: सच, दोस्तों, मैं इनमें से किसी भी कंपनी में काम नहीं करता। यह एक विज्ञापन नहीं है।