Варианты свободных логинов при регистрации. Какой алгоритм?

Ситуация:
Человек регистрируется на сайте, но выбранный логин уже занят.

Задача:
Предложить пользователю (сгенерировать) несколько вариантов логина, которые гарантированно свободны. При этом эти варианты должны быть более менее осмысленные. Не случайный набор символов.

Проблема:
Как это сделать (алгоритм)? Мой вариант, такой.
1. Допустим логин "dima". Найти в базе все логины содержащие подстроку "dima" и поместить в массив.
2. Генерируем предположительно свободные логины по принципу добавления в начало и/или в конец искомой подстроки некоторых, заранее определенных символов. Например, "mr.dima", "dima-2014" и т.д. Эти логины помещаем во второй массив.
3. Ищем в первом массиве логины из второго массива. Те, что не найдены предлагаем пользователю.

Подход вроде рабочий, но все же хотелось бы услышать мнение профессионалов. Возможно уже приходилось делать что-то подобное? Как сделано у Вас?
  • Вопрос задан
  • 5705 просмотров
Решения вопроса 1
@vagrand
1. Мне кажется, что этот пункт будет при большой базе довольно затратным, особенно если искать так: WHERE login LIKE "%dima%".

Как по мне лучше сперва создать список предложений, а потом проверить какие из них есть в базе: WHERE login in ('...', '...', ...)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽