我正在运行一个Java应用程序来查询Musicbrainz数据库以获取信息,我遇到了一个特殊的问题。我的应用程序构建的查询(使用WHERE
)如下:
java.net.URL.URL
上述查询返回一个空响应:
http://musicbrainz.org/ws/2/recording?query=%22Gilt+Complex%22+AND+artistname%3A+%22Sons+And+Daugthers%22
但是,如果我将AND更改为小写,则查询可以正常运行:
<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>
返回:
http://musicbrainz.org/ws/2/recording?query=%22Gilt+Complex%22+and+artistname%3A+%22Sons+And+Daugthers%22
如果我将查询复制并粘贴到Chrome中,也会发生同样的事情。其他歌曲还没有发生在我身上。谁能解释一下这里发生了什么?
答案 0 :(得分:3)
查询区分大小写,其实质上是“AND”作为关键字在所有大写字母中。您的第一个查询不会返回任何结果,因为:
“Gilt Complex”和artistname =“Sons and Daugthers”没有结果。
您的第二个查询有数十万个结果,因为它被翻译成:
“Gilt Complex”OR和OR artistname =“Sons and Daugthers”
查询中的最后一个术语不适用于任何内容,只是一个排除项。在这种情况下仅搜索“和”会产生526821个结果,这与我们之前观察到的结果相符。