У меня небольшая проблема с основным приложением данных, которое я сейчас пишу. У меня две разные модели, контексты и постоянные магазины. Один для моих данных приложения, другой для веб-сайта с соответствующей информацией для меня.
В большинстве случаев я сопоставляю ровно одну запись из своего приложения с другой записью из другого источника. Иногда, однако, я должен вернуться к нечеткой строке, чтобы связать две записи.
Я пытаюсь соответствовать названиям песен. Мой локальный заголовок может быть (составлен) "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, документацию cocoa, и я не могу найти четкого ответа о том, как выполнить нечеткое сопоставление в этих случаях. Мои строки могут начинаться с чего угодно, иметь кучу специальных символов, обычно заканчиваться случайными или игнорировать символы.
Regexp не будет делать, ни NSPredicates, Soundex не будет работать с иностранными именами, и, может быть, Levenshtein будет недостаточно (или будет?).
Я ищу заголовок в наборе из примерно дюжины потенциальных матчей, но мне очень сложно сделать эту операцию. 100% точность не является целью.
Я думал об удалении игнорируемых слов, извлечении ключевых слов (в этом примере, "французский, идеалист, pensée" ), объединить их, а затем использовать расстояние Левенштейна (слова в названии песни должны быть в том же порядке),
В моем специальном случае это сработает? Что такое отраслевой стандарт в отношении этой проблемы (я не могу быть единственным в мире, который хочет сопоставить несколько разных имен песен) Может ли Core Core Data, cocoa или Objective-C помочь мне?
Большое спасибо.