从Wikidata网站而不是API获取搜索结果

时间:2018-08-21 12:51:03

标签: wikipedia-api wikidata wikidata-api

我正在尝试wikidata API,但搜索查询“ Jas 39 C Gripen”遇到了一些麻烦。它会在wikidata网站上返回结果,但是如果我使用API​​,则不会返回结果。

在wikidata网站上,我得到两个查询查询结果

https://www.wikidata.org/w/index.php?search=Jas+39+C+Gripen&title=Special:Search&fulltext=1

使用API​​的同一查询,不返回结果

https://www.wikidata.org/w/api.php?action=wbsearchentities&format=json&language=en&type=item&continue=0&search=Jas%2039%20C%20Gripen

我缺少某些参数还是使用了错误的参数?对于许多其他查询,我从API获得结果。

2 个答案:

答案 0 :(得分:3)

在解释用户的条目时,本地Wikidata搜索似乎应用了一些“模糊逻辑”。就您而言,它显示了两个结果,尽管第一个字符中缺少字符C

回到API 和您选择的操作,您可以使用Jas 39 Gripen作为搜索词(将显示一个结果)以及Jas 39C Gripen(也会显示一个结果)。但似乎您不能使用Jas 39 C Gripen(请注意9C之间的空格字符)。

换句话说,

https://www.wikidata.org/w/api.php?action=wbsearchentities&format=json&language=en&type=item&continue=0&search=Jas%2039%20Gripen
https://www.wikidata.org/w/api.php?action=wbsearchentities&format=json&language=en&type=item&continue=0&search=Jas%2039C%20Gripen

都可以,但是

https://www.wikidata.org/w/api.php?action=wbsearchentities&format=json&language=en&type=item&continue=0&search=Jas%2039%20C%20Gripen

没有。

我对此问题进行了进一步调查,最后找到了解决方案。试试这个:

https://www.wikidata.org/w/api.php?action=query&list=search&format=json&srsearch=Jas+39+C+Gripen

动作query允许搜索词中出现一些“模糊性”。请参阅API文档以获取更多详细信息。简而言之,此操作将执行全文搜索(显然是您想要的),并允许使用nearmatch搜索类型。

答案 1 :(得分:2)

原因似乎是英文标签是JAS 39C Gripen。通过从查询中删除一个空格,您将获得所需的结果:

https://www.wikidata.org/w/api.php?action=wbsearchentities&format=json&language=en&type=item&continue=0&search=Jas%2039C%20Gripen