Как найти и вывести контакты с возможными опечатками?

Есть База данных MySQL с таблицей контактов
со столбцами id и name (350000 контактов). Необходимо их собрать в группы контактов с возможными опечатками.
Например:
Тимур
Дмитрий
Линар
Линур
Темур
Димитрий
Легар

Нужно собрать и вывести:
Тимур, Темур
Дмитрий, Димитрий
Линур, Линар, Легар.

На опечатки проверял с помощью функции levenshtein()<2.

Можно было бы перебрать массив один раз и выдать результат. Но проблема в том что база данных контактов постоянно меняется и изменяется. И нужен всегда актуальный вариант(по крайней мере актуальный на каждые 5-10 минут), но учитывая, что перебор составляет очень большое количество времени (1.3 контакта в секунду) это не позволительно. Подскажите пожалуйста каким образом можно реализовать данную задачу. Или оптимизировать поиск.

Поиск выполнял следующим способом:
1. Запрашивал контакты из бд
2. Каждый контакт проверял с каждым на возможность опечатка "левенштейном"
  • Вопрос задан
  • 260 просмотров
Пригласить эксперта
Ответы на вопрос 2
@d-stream
Готовые решения - не подаю, но...
Первое что напрашивается - отфильтровывать явно несравнимые. Например какой смысл сравнивать трехбуквенное имя с пятнадцатисимвольным?

Ну и общий вопрос: а в каком из имен Тимур, Темур и Теймур опечатка?
Ответ написан
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
Но проблема в том что база данных контактов постоянно меняется и изменяется. И нужен всегда актуальный вариант(по крайней мере актуальный на каждые 5-10 минут), но учитывая, что перебор составляет очень большое количество времени (1.3 контакта в секунду) это не позволительно.


Один раз проверить данные в базе, а затем проверять на опечатки перед записью в нее.
Проверять можно частично по именам, с помощью LIKE условия, но, наверное, лучше один раз просто пройтись по всей базе.

>Или оптимизировать поиск
Индексы, кэширование.
Еще можно взять sphinxsearch какой-нибудь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 09:29
2500 руб./за проект
25 апр. 2024, в 09:27
4000 руб./за проект
25 апр. 2024, в 09:20
10000 руб./за проект