मैंने इस बारे में सोचा, और समाधान के साथ आने की कोशिश कर रहा हूं कि कैसे एक डेटाबेस को खोजने के लिए फजी हो, अगर उदाहरण के लिए एक उपयोगकर्ता एक वर्तनी की गलती टाइप करता है। इसके पीछे के तर्क के साथ कोई चमकती हुई समस्या? क्या यह काम करेगा और पहले भी किया गया है?
हमारी तालिका हम खोज करना चाहते हैं:
**tblArticles**
Body - Soundex_Body - CharacterCoded_Body
इसलिए हम भौतिक प्रदर्शन के लिए कच्चे टेक्स्ट बॉडी को स्टोर करते हैं। अन्य 2 कॉलम का उपयोग उन खोजों के लिए किया जाता है जो निम्नलिखित तरीके से पूर्व निर्धारित हैं:
Soundex
बॉडी को शब्दों में विभाजित किया गया है, और इसका साउंडेक्स संस्करण में अनुवाद किया गया है। IE, जिसके परिणामस्वरूप शरीर कुछ इस तरह हो सकता है:
H252 B54 C23 E33... etc
तो कोई 'डायनसोर' में प्रवेश कर सकता है, और लेख निकाय 'डायनासोर' को पढ़ता है, ये दोनों B26 का मूल्यांकन करते हैं। फिर हम खोज शब्द के ध्वनि मान पर एक LIKE चलाते हैं।
चरित्र कोडेड
एक ऐसे चरित्र मानचित्रण को देखते हुए, जो मानचित्र अभाज्य संख्याओं में आता है, IE:
h = 2
e = 3
l = 5
o = 7
p = 11
c = 13
help = 2*3*5*11 = 330
hello = 2*3*5*5*7 = 1050
hell = 2*3*5*5 = 150
hlep = 2*5*3*11 = 330
cello = 13*3*5*5*7 = 6825
यदि कोई उपयोगकर्ता 'हैलो' टाइप करना चाहता है, लेकिन उन्होंने दो या दो से अधिक वर्णों को 'हेलो' उदाहरण के लिए चारों ओर घुमाया, तो वे उसी संख्या का मूल्यांकन करेंगे। कच्चे शरीर को शब्दों में विभाजित करें, प्राइम हर शब्द को एनकोड करें और डेटाबेस में स्टोर करें जो आपको ऐसा दिखता है:
330 6825 330 1050... etc
फिर हम मिस्टीज से मिलान करने के लिए इस मान पर खोज पसंद कर सकते हैं।
लाभ
- टाइपोस के खिलाफ की रक्षा की
- ध्वन्यात्मक गलत वर्तनी के खिलाफ संरक्षित है
- अधिक गैर देशी अंग्रेजी बोल अनुकूल
- किसी भी भाषा में काम करेगा (जहां साउंडेक्स काम करता है)
टिप्पणियाँ और विचार? एक प्रकार की बहुस्तरीय खोज। आप निश्चित रूप से इसे और भी बेहतर बनाने के लिए वेट रिटर्न वैल्यू कर सकते हैं (IE एक शाब्दिक टेक्स्ट बॉडी मैच अधिक मूल्य का है), लेकिन क्या यह वर्तनी की त्रुटियों और गैर-देशी अंग्रेजी बोलने वालों की खोजों के लिए एक अच्छा समाधान है?