【发布时间】:2015-03-19 15:18:24
【问题描述】:
我正在尝试使用 Wikipedia API 沙箱从一个类别中生成随机文章。
但是每当进行查询时,文章都会按字母顺序而不是随机返回。 每次返回相同的文章集。每次检索到的文章数量远低于该类别的文章总数。查询中的错误是什么?
【问题讨论】:
标签: api mediawiki wikipedia wikipedia-api mediawiki-api
我正在尝试使用 Wikipedia API 沙箱从一个类别中生成随机文章。
但是每当进行查询时,文章都会按字母顺序而不是随机返回。 每次返回相同的文章集。每次检索到的文章数量远低于该类别的文章总数。查询中的错误是什么?
【问题讨论】:
标签: api mediawiki wikipedia wikipedia-api mediawiki-api
将列表 API 与生成器一起使用是没有意义的。大多数查询 API 将一组页面名称/ID 作为输入,并且此参数可以替换为生成器。列表 API 不接受此类输入,因此不会受到影响。
实际发生的是随机 API 在random 键下生成单个页面(因为它的限制参数默认为 1);该页面是适当随机的,并且随着每个请求而变化,但它不限于类别(列表 API 不以这种方式工作)。生成器 API 的返回(当然不是随机的)显示在 pages 键下,因为在 title 参数中传递给随机 API 的任何页面都只是在该键下返回。
您可以调用Special:RandomInCategory(还没有等效的 API)然后重试,直到获得主命名空间页面。
【讨论】:
https://www.mediawiki.org/wiki/API:Random
页面按固定顺序列出,只有起点是随机的。这意味着,例如,如果“主页”是您列表中的第一个随机页面,则“虚构猴子列表”将始终排在第二位,“瓦努阿图邮票上的人物列表”将始终排在第三位,依此类推。
【讨论】:
生成器为您提供了一个小的输入集,我认为 random 不能很好地与生成器输入配合使用...
【讨论】:
将random 作为值传递给list 参数不会影响文章的顺序,但会影响返回的文章。
这意味着每次将返回一组不同的“随机”文章,并不一定意味着它们将以随机顺序呈现。
在相关说明中,对于您在每个查询中获得相同数据集的原因,最可能的解释是您限制了查询范围(使用其他参数),因此可能的文章总数为小于最大数量 (rnlimit),因此每次返回相同的集合。
要么限制返回的文章数量,要么扩大搜索查询的范围。
查看此查询以获取工作示例:https://en.wikipedia.org/w/api.php?action=query&list=random&rnlimit=5&format=json
您可以在MediaWiki documentation 上找到有关使用的更多信息。
【讨论】: