शुद्ध MySQL में अच्छी तरह से हल करने के लिए, गलत वर्तनी समस्या कठिन है, यदि असंभव नहीं है।
बहु-स्तंभ FULLTEXT
खोज इतनी बुरी नहीं है।
आपकी क्वेरी कुछ इस तरह दिखेगी...
SELECT column, column
FROM table
WHERE MATCH(Company, FirstName, LastName, whatever, whatever)
AGAINST('search terms' IN NATURAL LANGUAGE MODE)
यह परिणामों का एक गुच्छा उत्पन्न करेगा, जो कि MySQL के अनुमानों के अनुसार सबसे पहले हिट होने की संभावना है। MySQL के अनुमान बहुत अच्छे नहीं हैं, लेकिन वे आमतौर पर पर्याप्त होते हैं।
आपको एक FULLTEXT
. की आवश्यकता होगी आपके MATCH()
में कॉलम की सूची से मेल खाने वाली अनुक्रमणिका खंड। उस इंडेक्स को बनाना इस तरह दिखता है।
ALTER TABLE book
ADD FULLTEXT INDEX Fulltext_search_index_1
(Company, FirstName, LastName, whatever, whatever);
आपके प्रश्न में टिप्पणियों के बावजूद, आपको केवल उन स्तंभों के समूह के लिए एक अनुक्रमणिका की आवश्यकता है जिन्हें आप खोजेंगे।
किसी भी हाल के पुराने सर्वर हार्डवेयर पर 20K पंक्तियाँ एक बड़ा बोझ नहीं होंगी।
गलत वर्तनी:आप कोशिश कर सकते हैं SOUNDEX()
, लेकिन यह अमेरिकी अंग्रेजी में लोगों के नाम देखने के लिए बेल सिस्टम द्वारा डिजाइन किया गया एक प्रारंभिक 20वीं सदी का एल्गोरिथम है। यह कई झूठी सकारात्मक हिट प्राप्त करने के लिए डिज़ाइन किया गया है, और यह वास्तव में चट्टानों की एक बाल्टी से भी कम है।
यदि आपको वास्तव में वर्तनी सुधार की आवश्यकता है तो आपको स्फिंक्स की जांच करने की आवश्यकता हो सकती है।