java - 通过歌曲名称和艺术家姓名查找歌曲的算法,匹配最接近的字符串
问题描述
我正在使用 spotify 的 API 在具有多个歌曲名称的文本区域中查找歌曲 - 艺术家姓名,挑战在于可以以多种格式输入信息,例如:
Pink Floyd - shine on you crazy diamond
shine on you crazy diamond - pink Floyd
pink Floyd : shine on you crazy diamond
Pink Floyd - shine on you crazy diamond (HQ) (lyrics)
(等等)
由于一首歌曲在Spotify中可能不可用,我想根据用户的选择以两种方式实现它:完全匹配,如果字符串的某个百分比找到匹配则匹配。
关于如何实现这个或可以帮助实现它的算法的任何建议?谢谢。
解决方案
我建议看看Levenshtein distance。它通过计算两个字符串之间的编辑距离来比较两个字符串,即将第一个字符串转换为第二个字符串(反之亦然)所需的最小编辑次数(插入、删除或替换字符)。这是一种非常基本且常用的方法,但是还有多种其他方法可以用于编辑周围的距离,可能适合您的应用程序的需求。其中一些也在上面引用的文章中提到。
推荐阅读
- javascript - 为什么本地存储在页面刷新后不应该打开也不能工作?
- asp.net - 如何从 aspxgridview 复选框数据项模板将多个选中/未选中框值插入数据库?
- c# - 如何使用“upn”/“unique_name”(用户的电子邮件 ID)作为声明的一部分为我的 API 集成测试用例创建授权令牌
- android - CollapsingToolbarLayout 折叠时显示工具栏图标
- java - 使用反射根据接收到的参数访问属性 - Java
- c# - 从非根目录加载程序集
- java - 如何将文件从服务器(Spring 框架)上传到其他服务器(例如:112.12.15.2)
- c# - 序列的逆补
- reactjs - 反应原生如何在 tabBarOnPress 上重新渲染刷新屏幕
- matlab - 在 Matlab 的数据数组中添加缺失/额外的值