cnsilvan / UnblockNeteaseMusic

Revive unavailable songs for Netease Cloud Music (Golang)
GNU General Public License v3.0
528 stars 74 forks source link

关于搜索匹配逻辑咨询 #72

Closed WROIATE closed 2 years ago

WROIATE commented 3 years ago

目前我查看代码,其中有几处逻辑我有些疑惑,期望作者指点

  1. kuwo音源默认只返回第一个值 实际上,kuwo的排序并没有那么精准,我测试的歌曲有把同专辑的其它歌曲排到上面的情况,那么为什么不对kuwo也进行 MatchScore计算后再选出最符合的一个呢?
  2. 使用keyword搜索而不是使用name搜索 由于网易云会把复数创作者(作词、作曲)同时作为歌手写在一起,因此目前使用keyword会出现搜到非歌手的创作者包含在歌曲中的翻唱曲,例如《シニカルナイトプラン》这首曲子变为keyword就是シニカルナイトプラン Ayase 初音ミク,那么他搜素到的曲子可能是带有初音ミク Ayase标题的翻唱曲,反而搜不到正确的シニカルナイトプラン。如果单纯搜索歌曲名后在进行MatchScore计算反而更容易获得正确的结果。
cnsilvan commented 3 years ago

1.kuwo排序没那么精准我是没想到的,一堆人做的搜索不应该。最初就是本地匹配的,后面发现kuwo自己是做了排序的就改了,而kugou前面植入广告歌曲。 2.歌曲名+歌手 是综合考虑 尽量在三方平台第一页出现想要的歌曲,我之前说有空会加入时间匹配。从问题反馈来看,你说的歌曲情况较少。根据我的经验如果 keyword查不出来或者查出来一堆翻唱 大概率那个平台没有这首歌的版权。

WROIATE commented 2 years ago

1.kuwo排序没那么精准我是没想到的,一堆人做的搜索不应该。最初就是本地匹配的,后面发现kuwo自己是做了排序的就改了,而kugou前面植入广告歌曲。 2.歌曲名+歌手 是综合考虑 尽量在三方平台第一页出现想要的歌曲,我之前说有空会加入时间匹配。从问题反馈来看,你说的歌曲情况较少。根据我的经验如果 keyword查不出来或者查出来一堆翻唱 大概率那个平台没有这首歌的版权。

我这想了一个比较有趣的搜索方案,在我本地测试了下效果还行 把artist排列组合,然后分别使用歌名+artist组合出几个不同的关键字来进行查询,最后再将所有的结果sort 比如一个歌曲的名字是A,艺人是B和C,那么组合的关键字就是 A A B A C A B C 然后分别用这几个关键字进行搜索,获得四个list,将这四个list合并后再进行sort 为了保证速度,我在测试代码里使用了goroutine,获得了和原来几乎相同的耗时 目前只用了kuwo和kugou做实验,pr我后续发过来,可以看看 @cnsilvan

paldier commented 2 years ago

如果性能差别不大那就太好了