Я использую инструмент CSV Import для проекта, над которым я работаю. Клиент должен иметь возможность вводить данные в excel, экспортировать их как CSV и загружать в базу данных. Например, у меня есть эта запись CSV:
1, John Doe, ACME Comapny (the typo is on purpose)
Конечно, компании хранятся в отдельной таблице и связаны с внешним ключом, поэтому мне нужно найти правильный идентификатор компании перед вставкой. Я планирую это сделать, сравнивая названия компаний в базе данных с названиями компаний в CSV. сравнение должно возвращать 0, если строки точно совпадают, и возвращать некоторое значение, которое становится больше по мере того, как строки становятся более разными, но strcmp не режет его здесь, потому что:
"Acme Company" и "Acme Comapny" должны иметь очень небольшой индекс разницы, но "Acme Company" и "Cmea Mpnyaco" должны иметь очень большой индекс разницы Или "Acme Company" и "Acme Comp". также должен иметь небольшой индекс разницы, даже если количество символов отличается. Кроме того, "Компания Acme" и "Компания Acme" должны вернуть 0.
Итак, если клиент вводит тип при вводе данных, я могу предложить ему выбрать имя, которое он, скорее всего, захочет вставить.
Есть ли известный алгоритм для этого, или, может быть, мы можем его выдумать:)