从维基数据网站获取搜索结果,但不是API



我正在尝试维基数据API,但在搜索查询"Jas 39 C Gripen"时遇到了一些麻烦。它会在维基数据网站上返回结果,但如果我使用 API,则不会返回结果。

在维基数据网站上,我得到了两个查询的搜索结果

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 获得结果。

原生维基数据搜索似乎在解释用户的条目时应用了一些"模糊逻辑"。在您的情况下,它显示了两个结果,尽管第一个结果中缺少字符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搜索类型。

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

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

最新更新