Результаты поиска похожих звуков в Mysql

#php #mysql

#php #mysql

Вопрос:

Предположим, у меня есть таблица пользователей. Один из столбцов таблицы, хранящей имя пользователя. Также предположим, что в таблице есть строки. Имена пользователей следующие: «Суман», «Сумон», «Папия». Теперь я хочу запрос mysql, если пользователь выполняет поиск из таблицы по имени пользователя с помощью ‘Suman’, то в результате будут показаны две строки, одна для ‘Suman’, а другая для ‘Sumon’.

Комментарии:

1. посмотрите на полнотекстовые запросы. dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

2. Ищите SoundEx в MySQL

3. полный текст не будет работать с «опечатками». поиск «suman» вернет «suman». он не вернет «sumon»

4. Вы пробовали добавить порядок по имени? Потому что, когда вы делаете where firstname как ‘%sum%’, он сортирует выходные данные по добавлению. Итак, вам нужно добавить порядок по имени, чтобы получить Sum после Suman

5. как насчет использования расстояния Левенштейна ?

Ответ №1:

Вы можете использовать soundex, он будет сравнивать, совпадает ли звучание значений в firstname со звучанием предоставленного слова

Согласно документам

При использовании SOUNDEX() вы должны знать о следующих ограничениях:

  • Эта функция, реализованная в настоящее время, предназначена для хорошей работы со строками, которые находятся только на английском языке. Строки на других
    языках могут не давать надежных результатов.

  • Эта функция не гарантирует получение согласованных результатов со строками, использующими многобайтовые наборы символов, включая utf-8.

 select *
from t
where soundex(firstname)=soundex('Suman')
  

ДЕМОНСТРАЦИЯ