У меня небольшая проблема с основным приложением данных, которое я сейчас пишу. У меня есть две разные модели, контексты и постоянные магазины. Один для данных моего приложения, другой для веб-сайта с соответствующей информацией для меня.
В большинстве случаев я сопоставляю ровно одну запись из моего приложения с другой записью из другого источника. Однако иногда мне приходится прибегать к нечеткому сопоставлению строк, чтобы связать две записи.
Я пытаюсь сопоставить названия песен. Мое местное название может быть (составлено) "The French Idealist is in your pensée"
, а название удаленной песни может быть "01 - 10 - French idealist in in you're pensee, The (dub remix, feat. DJ Objective-C)"
Я ищу переполнение стека, Google, документацию по какао, и не могу найти четкого ответа о том, как сделать нечеткое совпадение в этих случаях. Мои строки могут начинаться с чего угодно, иметь набор специальных символов, обычно заканчиваться случайными или игнорируемыми символами.
Regexp не подойдет, как и NSP Предикаты, Soundex плохо работает с иностранными именами, и, возможно, Левенштейна будет недостаточно (или это будет?).
Я ищу заголовок в наборе из примерно дюжины возможных совпадений, но я очень хочу проделать эту операцию. 100% точность не является целью.
Я думал об удалении пропущенных слов, извлечении ключевых слов (в этом примере «французский, идеалист, пенсе»), их объединении и затем использовании расстояния Левенштейна (слова в названии песни должны быть в том же порядке) ,
В моем особом случае это сработало бы? Каков отраслевой стандарт в отношении этой проблемы (я не могу быть единственным в мире, кто хочет сопоставлять слегка разные названия песен) Могут ли Core Data, Cocoa или Objective-C помочь мне?
Большое спасибо.