ध्यान दें कि SOUNDS LIKE
जैसा आप सोचते हैं वैसा काम नहीं करता। यह LIKE
. के बराबर नहीं है MySQL में, क्योंकि यह %
. का समर्थन नहीं करता है वाइल्डकार्ड।
इसका अर्थ है कि "जॉन" की खोज करते समय आपकी क्वेरी को "जॉन डेविड" नहीं मिलेगा। यह स्वीकार्य हो सकता है यदि यह सिर्फ आपकी वापसी है, लेकिन यह आदर्श नहीं है।
तो यहाँ एक अलग सुझाव है (जिसमें सुधार की आवश्यकता हो सकती है); सबसे पहले PHP का उपयोग करें soundex()
आप जिस कीवर्ड की तलाश कर रहे हैं उसका साउंडेक्स खोजने के लिए कार्य करें।
$soundex = soundex($word);
$soundexPrefix = substr($soundex, 0, 2); // first two characters of soundex
$sql = "SELECT lastname, firstname ".
"FROM table WHERE SOUNDEX(lastname) LIKE '$soundexPrefix%' ".
"OR SOUNDEX(firstname) LIKE '$soundexPrefix%'";
अब आपके पास पहले नामों और उपनामों की एक सूची होगी जिसमें ध्वनि में अस्पष्ट समानता है (यह बहुत सारी प्रविष्टियां हो सकती हैं, और हो सकता है कि आप अपनी खोज के लिए उपयोग किए जाने वाले ध्वनि उपसर्ग की लंबाई बढ़ाना चाहें)। फिर आप प्रत्येक शब्द के साउंडेक्स और अपने खोज शब्द के बीच लेवेनशेटिन दूरी की गणना कर सकते हैं, और उसके आधार पर छाँट सकते हैं।
दूसरा, आपको SQL इंजेक्शन बग से बचने के लिए MySQL में पैरामीटरयुक्त प्रश्नों को देखना चाहिए।