有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何检查字符串B的任何部分是否在字符串A中

我目前正在编程一个音乐机器人,从Spotify获取音乐。我正在努力检查用户查询中是否同时包含歌曲名称和艺术家(之所以需要,是因为Spotify会在歌曲名称之前查找唱片集名称,因此它会在适合用户查询的唱片集中查找最流行的歌曲)

这是我的代码当前的状态:

String query="Megadeth Holy Wars";
String artist="Megadeth";
String songName="Holy Wars...The Punishment Due - 2004 Digital Remaster";

System.out.println("Query >>> "+query.toLowerCase());
System.out.println("Artist >>> "+artist.toLowerCase());
System.out.println("Song name >>> "+songName.toLowerCase());
System.out.println("Query contains artist: "+query.toLowerCase().contains(artist.toLowerCase()));
System.out.println("Query contains song name: "+query.toLowerCase().contains(songName.toLowerCase()));

这是输出:

Query >>> megadeth holy wars
Artist >>> megadeth
Song name >>> holy wars...the punishment due - 2004 digital remaster
Query contains artist: true
Query contains song name: false

目前我使用分割,但我不认为这是一个好的处理方法,所以我想知道是否有一个好的方法,这两种说法都是正确的


共 (1) 个答案

  1. # 1 楼答案

    我确信您将不得不使用两次搜索。一个是艺术家,一个是歌曲名——正如塞德里克所建议的那样——否则,对于复杂的查询来说,这将非常困难

    • 第一步是确定艺术家的身份。因为有更多的重叠和重复的歌曲标题。(也有重叠和重复的艺术家姓名,但与歌曲名称相比,绝对数字较少。)。一些人工智能或机器学习可以大大提高获得正确艺术家的准确性

    • 然后,您可以尝试从查询中减去艺术家姓名,并用余数搜索歌曲标题。(理想情况下,仅在通过某种select查询检索到的属于已识别艺术家的歌曲标题列表中。)

    我希望这有帮助