【问题标题】:Getting search results from wikidata website, but not API从 wikidata 网站而不是 API 获取搜索结果
【发布时间】:2018-08-21 12:51:03
【问题描述】:

我正在试用 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 获得结果。

【问题讨论】:

    标签: wikipedia-api wikidata wikidata-api


    【解决方案1】:

    似乎本地 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 搜索类型。

    【讨论】:

      【解决方案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

      【讨论】:

      • 正确,但 OP 仍然只得到 one 条目以这种方式返回。如果我正确理解了这个问题,则 OP 希望 从 API 获得与使用搜索框相同的结果,这意味着在这种情况下有两个条目。
      猜你喜欢
      • 2014-02-23
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 2019-09-10
      • 2016-07-31
      相关资源
      最近更新 更多