Обърнете внимание, че SOUNDS LIKE
не работи както си мислите. Не е еквивалентно на LIKE
в MySQL, тъй като не поддържа %
заместващ знак.
Това означава, че вашата заявка няма да намери "John David", когато търсите "John". Това може да е приемливо, ако това е само вашият резервен вариант, но не е идеален.
Ето едно различно предложение (което може да се нуждае от подобрение); първо използвайте PHPs 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%'";
Сега ще имате списък с имена и фамилни имена, които имат смътно сходство в звученето (това може да са много записи и може да искате да увеличите дължината на префикса soundex, който използвате за вашето търсене). След това можете да изчислите разстоянието на Левенщайн между звука на всяка дума и вашата дума за търсене и да сортирате по това.
Второ, трябва да разгледате параметризираните заявки в MySQL, за да избегнете грешки при SQL инжектиране.