【问题标题】:MediaWiki API - what are the differences between 'opensearch' & 'query', and 'generator' & 'list' in the API call urlMediaWiki API - API 调用 url 中的 'opensearch' 和 'query' 和 'generator' 和 'list' 有什么区别
【发布时间】:2018-01-24 10:17:47
【问题描述】:

我正在尝试为 FreeCodeCamp 上的一个项目使用 mediawiki API。我已经阅读了 API 文档中的这些页面:

  1. OpenSearch
  2. Generators
  3. Lists
  4. Query

目前还不清楚真正的区别是什么,以及何时以及为什么需要使用每一个。这是我进行的三个 API 调用,每个调用产生的结果略有不同:

  1. en.wikipedia.org/w/api.php?action=opensearch&search=Albert

在此,我得到一个包含 4 个项目的数组,第一个是搜索词,第二个是结果页面标题列表,第三个是每个页面的小 sn-p,第四个是 URL每一页。

  1. en.wikipedia.org/w/api.php?action=query&generator=search&gsrsearch=Albert&format=json

在这个,有一个generator=search,我不明白。在生成器的 API 页面上,它只是说:Get the list of pages to work on by executing the specified query module.,这并不是很有帮助。这是什么意思?

  1. en.wikipedia.org/w/api.php?action=query&list=search&srsearch=Albert&format=json

这与上一个相同,只是我使用的是list=search

所以我的问题是:

  • 在第一次和第二次调用之间,我使用的是action=opensearchaction=query:真正的区别是什么?

  • listgenerator 有什么区别?

  • 最后,为什么在使用generator=search时,gsrprop=snippet不显示任何sn-ps:API Sandbox for this,为什么inprop=url在使用list=search时不起作用: API Sandbox for this

如您所见,两者几乎相同,除了一个使用生成器,另一个使用列表,但都提到 inprop=url 和 sn-ps (srprop & gsrprop)。

【问题讨论】:

    标签: php json mediawiki wikipedia-api mediawiki-api


    【解决方案1】:

    opensearch 用于OpenSearch API。除非您正在实现该 API(即您正在编写浏览器或搜索引擎或类似的东西),否则您不应该使用它。 list=prefixsearch 提供了类似的功能,但没有 OpenSearch 合规性所需的语法怪癖。

    生成器用于将结果“管道”到另一个 API。 list=searchgenerator=search 将为您提供相同的页面集,但在第一种情况下,有关页面的信息将由搜索模块提供(例如,如果您指定 srprop=snippet,它将添加到 sn-ps),在第二种情况下,它将由您添加到 prop= 参数的任何 API 模块提供(这就是 gsrprop=snippet 不做任何事情的原因)。这基本上是进行搜索查询然后查询一些数据以获得结果的快捷方式。

    【讨论】:

      猜你喜欢
      • 2022-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-04
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 2012-03-18
      相关资源
      最近更新 更多