MediaWiki API - 'opensearch'和& s之间有什么区别? 'query'和'generator'& API调用网址中的“列表”

时间:2018-01-24 10:17:48

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

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

  1. OpenSearch
  2. Generators
  3. Lists
  4. Query
  5. 目前尚不清楚真正的差异是什么,何时以及何时需要使用每一个。这是我发出的三个API调用,每个调用产生的结果略有不同:

    1.   

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

    2. 在这里,我得到一个包含4个项目的数组,第一个是搜索词,第二个是结果页面标题列表,第三个是每个页面的小片段,第四个是每个页面的URL 。

      1.   

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

      2. 在这一个中,有一个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

        2. 除了我使用list=search之外,这与前一个相同。

          所以我的问题是:

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

          • listgenerator之间有什么区别?

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

          正如你所看到的,两者几乎相同,只有一个使用生成器,另一个使用列表,但都提到了inprop = url和snippets(srprop& gsrprop)。

1 个答案:

答案 0 :(得分:2)

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

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