3

我想获得符合条件的维基百科页面数。例如

  • “房子” --> 1,200 页
  • “人” --> 13,000 页
  • “大学学院”-> 360 页

在许多其他方法中,我可以通过使用 Lucene 索引 Wikipedia 来做到这一点,但这非常耗时。

有没有办法在Media Wiki API上执行这种类型的查询?

维基百科 API 的查询限制是多少?

干杯,穆龙

4

1 回答 1

1

试试list=search查询。例如:

(因为您说您只对匹配页面的数量感兴趣,所以我在查询中包含srlimit=1srprop=以最小化返回的额外信息。但显然没有办法阻止 API 至少返回第一个匹配的标题;srlimit=0只是给出一条错误消息。)

至于查询限制,每个查询的结果数量有限制,但我认为 MediaWiki 不会对您查询 API的速率实施任何硬性限制。MediaWiki 确实限制了编辑率,但我认为目前没有任何此类限制适用于搜索。

我相信建议是串行运行查询——也就是说,在发送下一个查询之前等待上一个查询完成。这提供了一种自动速率限制,因为如果服务器很忙,您的查询将需要更长的时间才能完成。如果您想玩得好,您还可以在查询中包含一个maxlag参数(如果失败,最好使用指数退避);maxlag 机制实际上是为自动编辑而设计的,而不是为搜索而设计的,但它至少可以确保您的代码在特别超载时不会访问 Wikimedia 的服务器。

此外,如果您想做很多此类查询,您可能需要考虑下载Wikipedia 数据库转储并自己编制索引(如您在问题中提到的那样),或者只是一次读取并计算匹配页面当你遇到他们。

于 2011-11-07T19:59:31.690 回答