Алгоритм поиска по имени автора? Добрый день. Общий вопрос по программированию. Необходимо организовать поиск по имени автора, причем имя автора написано по разному. Например, Френсис Дрейк | Дрейк, Френсис | Дрейк и так далее. При этом следует, также, учитывать возможные ошибки в написании имени автора (расстояние Левенштейна для последнего?). Буду благодарен за наводку на алгоритм. В голову ничего толкового не приходит.
Для решения этой задачи можно воспользоваться алгоритмом сравнения строк на основе расстояния Левенштейна. Расстояние Левенштейна позволяет определить минимальное количество односимвольных операций (вставка, удаление, замена) необходимых для превращения одной строки в другую.
Для каждого имени автора из базы данных можно рассчитать расстояние Левенштейна с введенным пользователем именем. Далее можно установить порог сходства (например, 2-3) и считать имена авторов "совпадающими", если расстояние Левенштейна не превышает этот порог.
Примерный алгоритм поиска по имени автора:
Ввод пользователя - введенное имя автораПолучение списка всех имен авторов из базы данныхДля каждого имени автора из списка: Рассчитать расстояние Левенштейна между именем автора из базы данных и введенным пользователем именемЕсли расстояние Левенштейна не превышает порог сходства, добавить имя автора в список "совпадающих"Вывод списка "совпадающих" имен авторов
Такой алгоритм позволит учесть возможные ошибки в написании имени автора и найти соответствия даже в случае, когда имя автора записано по-разному.
Для решения этой задачи можно воспользоваться алгоритмом сравнения строк на основе расстояния Левенштейна. Расстояние Левенштейна позволяет определить минимальное количество односимвольных операций (вставка, удаление, замена) необходимых для превращения одной строки в другую.
Для каждого имени автора из базы данных можно рассчитать расстояние Левенштейна с введенным пользователем именем. Далее можно установить порог сходства (например, 2-3) и считать имена авторов "совпадающими", если расстояние Левенштейна не превышает этот порог.
Примерный алгоритм поиска по имени автора:
Ввод пользователя - введенное имя автораПолучение списка всех имен авторов из базы данныхДля каждого имени автора из списка:Рассчитать расстояние Левенштейна между именем автора из базы данных и введенным пользователем именемЕсли расстояние Левенштейна не превышает порог сходства, добавить имя автора в список "совпадающих"Вывод списка "совпадающих" имен авторов
Такой алгоритм позволит учесть возможные ошибки в написании имени автора и найти соответствия даже в случае, когда имя автора записано по-разному.