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

问题描述 投票:1回答:1

我目前正在编写一个音乐机器人,可以从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

目前我使用拆分,但我不认为这是一个很好的方法来处理它所以我想知道是否有一个好方法,两个语句都是真的。

java regex string
1个回答
0
投票

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

  • 第一步是识别艺术家。因为有更多重叠和重复的歌曲标题。 (与歌曲标题相比,也有重叠和重复的艺术家名称,但绝对数量较少。)。一些人工智能或机器学习可以大大提高获得正确艺术家的准确性。
  • 然后,您可以尝试从查询中减去艺术家姓名,并使用余数搜索歌曲标题。 (理想情况下,就在属于通过某种选择查询检索到的已识别艺术家的歌曲标题列表中。)

我希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.