首页 > 解决方案 > 通过歌曲名称和艺术家姓名查找歌曲的算法,匹配最接近的字符串

问题描述

我正在使用 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中可能不可用,我想根据用户的选择以两种方式实现它:完全匹配,如果字符串的某个百分比找到匹配则匹配。

关于如何实现这个或可以帮助实现它的算法的任何建议?谢谢。

标签: javasearch

解决方案


我建议看看Levenshtein distance。它通过计算两个字符串之间的编辑距离来比较两个字符串,即将第一个字符串转换为第二个字符串(反之亦然)所需的最小编辑次数(插入、删除或替换字符)。这是一种非常基本且常用的方法,但是还有多种其他方法可以用于编辑周围的距离,可能适合您的应用程序的需求。其中一些也在上面引用的文章中提到。


推荐阅读