2011-10-12 13 views
5

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

डेटाबेस में डालने के लिए मुझे एक नाम दिया गया है, क्या एक व्यावहारिक तरीका है यह पता लगाने के लिए कि क्या यह संस्था डेटाबेस में पहले से ही है? यह एक शोध परियोजना नहीं है, इसलिए मैं एक ऐसे समाधान की तलाश में हूं जो उचित रूप से तेज़ है।

मैं django और postgresql का उपयोग कर रहा हूं, लेकिन इससे कोई फर्क नहीं पड़ता कि मुझे लगता है।

+0

पोस्टग्रेएसक्यूएल का कौन सा संस्करण आप चल रहे हैं? – Kuberchaun

+0

मैं किसी भी संस्करण को स्थापित कर सकते हैं। तो, मुझे लगता है कि नवीनतम। – akonsu

उत्तर

5

यह record linkage की समस्या है। कई डेटाबेस इस तरह के n -gram मिलान, जहां "विश्वविद्यालय" की तरह एक शब्द

[ "uni", "एनआईवी", "Ive", "ver" में विस्तार किया गया है चरित्र स्तर के रूप में के लिए बुनियादी तरीके प्रदान करते हैं "ईआरएस", ...]

के लिए n = 3. डेटाबेस भारित मिलान के कुछ प्रकार के साथ एक खोज की अनुमति देने के सूचकांक ऐसे सभी n -grams होगा और। pg_trgm बिल्कुल ऐसा करने लगता है, इसे आज़माएं।

0

ऐसा लगता है कि आप डेटाबेस में एक मूल्य को आपके द्वारा दिए गए मूल्य से छोटी व्याख्यात्मक दूरी के साथ खोजना चाहते हैं। उपसर्गों के साथ चीजों को ढूंढना काफी सरल है, लेकिन गलत वर्तनी वाले शब्द कठिन हैं। आप Peter Norvig's post on spell correctors पढ़ना चाहेंगे।

+0

यह अच्छा होगा अगर Norvig का एल्गोरिदम इतना बेहद भद्दा नहीं होगा। भारित लेवेनशेटिन ऑटोमाटा (शायद एक त्रिभुज रूप में) यह काम करेगा, लेकिन फिर भी प्रत्येक अस्पष्ट खोज के लिए चरम संख्याओं तक पहुंच को रोकने के लिए डेटाबेस पक्ष पर लागू किया जाना होगा। उसके साथ अच्छा भाग्य... –

1

आपको शायद एक समर्पित खोज इंजन का उपयोग करना चाहिए। Django-haystack आपको आसानी से सक्षम बनाता है जो आपके प्रोजेक्ट में सोलर, हुओश या एक्सपियन जैसे खोज इंजन जोड़ता है।

संबंधित मुद्दे