0

我正在运行一个查询 Musicbrainz 数据库以获取信息的 Java 应用程序,我遇到了一个特殊的问题。我的应用程序构建(使用java.net.URL.URL)的查询如下:

http://musicbrainz.org/ws/2/recording?query=%22Gilt+Complex%22+AND+artistname%3A+%22Sons+And+Daugthers%22

上面的查询返回一个空响应:

<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#" xmlns:ext="http://musicbrainz.org/ns/ext#-2.0" created="2018-04-25T14:25:36.224Z">
  <recording-list count="0" offset="0"/>
</metadata>

但是,如果我将 AND 更改为小写,则查询可以正常工作:

http://musicbrainz.org/ws/2/recording?query=%22Gilt+Complex%22+and+artistname%3A+%22Sons+And+Daugthers%22

返回:

<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#" xmlns:ext="http://musicbrainz.org/ns/ext#-2.0" created="2018-04-25T14:25:36.224Z">
  <recording-list count="526823" offset="0">
    ...
  </recording-list>
</metadata>

如果我将查询复制并粘贴到 Chrome 中,也会发生同样的事情。其他歌曲还没有发生在我身上。谁能解释这里发生了什么?

4

1 回答 1

3

该查询区分大小写,本质上“AND”作为关键字是全部大写的。您的第一个查询没有返回任何结果,因为:

"Gilt Complex" AND 艺术家名="Sons and Daugthers" 没有结果。

您的第二个查询有几十万个结果,因为它被翻译成:

“镀金情结” OR 和 OR 艺术家姓名="Sons and Daugthers"

查询中的最后一项不适用于任何内容,只是一个排除项。在这种情况下仅搜索“and”会产生 526821 个结果,这与我们之前观察到的结果相匹配。

于 2018-04-26T20:08:52.177 回答