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

21 Авг 2019 в 06:22
286 +1
1
Ответы
1

Для решения этой задачи можно воспользоваться алгоритмом сравнения строк на основе расстояния Левенштейна. Расстояние Левенштейна позволяет определить минимальное количество односимвольных операций (вставка, удаление, замена) необходимых для превращения одной строки в другую.

Для каждого имени автора из базы данных можно рассчитать расстояние Левенштейна с введенным пользователем именем. Далее можно установить порог сходства (например, 2-3) и считать имена авторов "совпадающими", если расстояние Левенштейна не превышает этот порог.

Примерный алгоритм поиска по имени автора:

Ввод пользователя - введенное имя автораПолучение списка всех имен авторов из базы данныхДля каждого имени автора из списка:
Рассчитать расстояние Левенштейна между именем автора из базы данных и введенным пользователем именемЕсли расстояние Левенштейна не превышает порог сходства, добавить имя автора в список "совпадающих"Вывод списка "совпадающих" имен авторов

Такой алгоритм позволит учесть возможные ошибки в написании имени автора и найти соответствия даже в случае, когда имя автора записано по-разному.

20 Апр 2024 в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир