SOUNDEX और 2 स्ट्रिंग्स के बीच एक संख्यात्मक दूरी का उपयोग करके एक स्ट्रिंग समानता की गणना करने के लिए एक त्वरित डोमेन विशिष्ट समाधान हो सकता है। यह वास्तव में तभी मदद करेगा जब आपके पास बहुत सारे उत्पाद कोड होंगे।
नीचे की तरह एक साधारण यूडीएफ का उपयोग करके आप एक स्ट्रिंग से संख्यात्मक वर्ण निकाल सकते हैं ताकि आप 'सीएलसी 2200 एनपीके' में से 2200 और 'सीएलसी 1100' में से 1100 प्राप्त कर सकें ताकि अब आप प्रत्येक इनपुट के SOUNDEX आउटपुट के आधार पर निकटता निर्धारित कर सकें। साथ ही प्रत्येक इनपुट के संख्यात्मक घटक की निकटता।
CREATE Function [dbo].[ExtractNumeric](@input VARCHAR(1000))
RETURNS INT
AS
BEGIN
WHILE PATINDEX('%[^0-9]%', @input) > 0
BEGIN
SET @input = STUFF(@input, PATINDEX('%[^0-9]%', @input), 1, '')
END
IF @input = '' OR @input IS NULL
SET @input = '0'
RETURN CAST(@input AS INT)
END
GO
जहां तक सामान्य प्रयोजन एल्गोरिदम जाते हैं, वहां कुछ जोड़े हैं जो डेटा सेट आकार और प्रदर्शन आवश्यकताओं के आधार पर सफलता की अलग-अलग डिग्री के साथ आपकी सहायता कर सकते हैं। (दोनों लिंक में TSQL कार्यान्वयन उपलब्ध हैं)
- डबल मेटाफोन - यह एल्गो आपको साउंडएक्स की तुलना में गति की कीमत पर बेहतर मैच देगा, हालांकि यह वर्तनी सुधार के लिए वास्तव में अच्छा है।
- लेवेनशेटिन दूरी - यह गणना करेगा कि 'सीएलसी 2200 एनपीके' से 'सीएलसी 2200' तक पहुंचने के लिए उदाहरण के लिए एक स्ट्रिंग को दूसरे में बदलने के लिए कितने कीप्रेस लगेंगे, जबकि 'सीएलसी 2200 एनपीके' से 'सीएलसी 1100' तक है। 5.
यहां एक दिलचस्प लेख है जो दोनों एल्गो को एक साथ लागू करता है जो आपको कुछ विचार दे सकता है।
उम्मीद है कि इनमें से कुछ से थोड़ी मदद मिलेगी।
संपादित करें:यहां एक बहुत तेज़ आंशिक लेवेनशेटिन दूरी कार्यान्वयन है (उस पोस्ट को पढ़ें जो सामान्य के समान सटीक परिणाम नहीं लौटाएगा)। 125000 पंक्तियों की मेरी परीक्षण तालिका पर यह 6 सेकंड में चलती है, जबकि मेरे द्वारा पहले लिंक की गई 60 सेकंड की तुलना में।