可可 – 在核心数据存储中匹配近似字符串

可可 – 在核心数据存储中匹配近似字符串,第1张

概述我正在撰写的核心数据应用程序中有一个小问题.我有两个不同的模型,上下文和永久存储.一个是我的应用程序数据,另一个是一个有相关信息的网站. 大多数情况下,我将一个记录从我的应用程序中匹配到另一个记录.有时候,我必须回退到模糊的字符串匹配来链接这两个记录. 我正在尝试匹配歌曲标题.我的本地名称可能是(组成)“法国理想主义者在你的手中”,遥远的歌曲标题可能是“01 – 10 – 法国理想主义者在你是pe 我正在撰写的核心数据应用程序中有一个小问题.我有两个不同的模型,上下文和永久存储.一个是我的应用程序数据,另一个是一个有相关信息的网站.

大多数情况下,我将一个记录从我的应用程序中匹配到另一个记录.有时候,我必须回退到模糊的字符串匹配来链接这两个记录.
我正在尝试匹配歌曲标题.我的本地名称可能是(组成)“法国理想主义者在你的手中”,遥远的歌曲标题可能是“01 – 10 – 法国理想主义者在你是pensee,(配音混音,壮举DJ目标 – C)”

我搜索堆栈溢出,谷歌,可可文件,我在这些情况下如何做一个模糊匹配我找不到任何明确的答案.我的字符串可以从任何东西开始,有一堆特殊字符,通常结束随机或被忽略的字符.

正则表达式不会做,也不是nspredicates,Soundex与外国名字不能很好地工作,也许莱文斯坦(Levenshtein)还不够(还是会吗?

我正在寻找一个大约十几个潜在的比赛的标题,但我希望做这个 *** 作相当多. 100%的准确性不是目标.

我正在考虑删除被忽略的单词,提取关键字(在本例中为“法语,理想主义者,pensée”),然后使用Levenshtein距离(歌曲标题中的单词应该是相同的顺序).

在我的特殊情况下,它会工作吗?关于这个问题的行业标准是什么(我不能是世界上唯一想要匹配稍微不同的歌曲名称)Core Core,Cocoa或Objective-C可以帮助我吗?

非常感谢.

解决方法 你想让你的搜索变得不敏感,以匹配pensée中的’é’和’e’.你可以通过在属性之后添加[d]来获得这个.像这样:

nspredicate *predicate = [nspredicate predicateWithFormat:@"(songTitle like[cd] %@)",yourSongSubstring];

[cd]中的’c’是为了不区分大小写.

由于您的字符串可能以您正在搜索的字符串中的任何顺序显示,您可以标记您的搜索字符串([… componentsByString:@“”]),然后创建一个谓词

nspredicate *predicate = [nspredicate predicateWithFormat:@"(songTitle like[cd] %@) and (songTitle like[cd] %@)",songToken1,songToken2];

结合上面谓词的语法可能会从内存中脱离出来.

总结

以上是内存溢出为你收集整理的可可 – 在核心数据存储中匹配近似字符串全部内容,希望文章能够帮你解决可可 – 在核心数据存储中匹配近似字符串所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1026628.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存