2011-08-27 6 views
5

मेरे वेब एप्लिकेशन में कई उपयोगकर्ता होंगे। और उनके पास अपनी वेब सामग्री पर अपलोड की गई सामग्री है। प्रत्येक सामग्री के लिए अपलोड करने के लिए इसमें शीर्षक, विवरण और टैग (कीवर्ड) होते हैं। मैं सामग्री या उपयोगकर्ता नाम खोजने के लिए एक खोज स्क्रिप्ट लिख सकता हूं। लेकिन जब वे वर्तनी गलती देते हैं तो वे कीवर्ड होते हैं, यह किसी भी परिणाम को वापस नहीं करता है। उदाहरण के लिए यदि डेटाबेस में "माइकल" नाम का कोई उपयोगकर्ता है और खोज क्वेरी "माइकल" थी, तो मुझे "माइकल" की खोज करने का मतलब था "जो खोज सुझाव के अलावा कोई नहीं है।PHP MySQL खोज सुझाव

यह सुझाव उपयोगकर्ता द्वारा अपलोड की गई सामग्री के लिए भी होना चाहिए। कोई उपयोगकर्ता अपनी सामग्री का शीर्षक "माइकल की गतिविधियां मई 2011" के रूप में रख सकता है और व्यक्तिगत शब्दों के लिए सुझाव उत्पन्न किए जाने चाहिए।

उत्तर

8

आप मिलता-जुलता नाम के लिए खोज करने के लिए, इस तरह Soundex इस्तेमाल कर सकते हैं:

SELECT * FROM users WHERE SOUNDEX(name) = SOUNDEX(:input) 

या कि

SELECT * FROM users WHERE name SOUNDS_LIKE :input 

की तरह (जो पूरी तरह से बराबर है)

संपादित करें: यदि आप सार्टएक्स के अलावा एल्गोरिदम का उपयोग करने की आवश्यकता है, क्योंकि मार्टिन होहेनबर्ग ने सुझाव दिया है कि आपको अपनी तालिका में एक अतिरिक्त कॉलम जोड़ना होगा, उदाहरण के लिए, sound_equivalent। (यह वास्तव में एक अधिक कुशल समाधान है क्योंकि इस कॉलम को अनुक्रमित किया जा सकता है)। अनुरोध तो होगा:

SELECT * FROM users WHERE sound_equivalent = :input_sound_equivalent 

sound_equivalent स्तंभ की सामग्री तो एक PHP एल्गोरिथ्म के साथ उत्पन्न किया जा सकता है, और उपयोगकर्ता मानकों के बाकी के साथ तालिका में सम्मिलित किया गया।

+2

अपनी भाषा के उद्घोषणा के लिए डिज़ाइन किए गए ध्वनि-शैली एल्गोरिदम का उपयोग करना सुनिश्चित करें। उदाहरण के लिए, जर्मन के लिए, साउंडएक्स कम उपयोगी है, और कोल्नर फोनेटिक द्वारा प्रतिस्थापित किया जाना चाहिए (जो MYSQL का हिस्सा नहीं है) – ty812

0

शायद सबसे आम शब्दों (जैसे: कुत्ता, घर, शहर, संख्याएं, पानी, इंटरनेट) का डेटाबेस बनाएं। इसे बड़ा बनाने की आवश्यकता नहीं है (< 10000 शब्द)। फिर जब आप खोज शब्द को विस्फोट करते हैं, तो खोज शब्दों की तरह शब्दों के लिए "शब्द" डेटाबेस देखें। फिर बस सुझावों को गूंजें।

2

यदि आपके पास कोई खोज परिणाम नहीं है तो आप सुझाव प्राप्त करने के लिए php लाइब्रेरी pspell का भी उपयोग कर सकते हैं।