我想获得符合条件的维基百科页面数量。 e.g。
在许多其他方面,我可以通过使用Lucene索引维基百科来做到这一点,但这非常耗时。
有没有办法在Media Wiki API上执行此类查询?
维基百科API的查询限制是什么?
干杯, Mulone
答案 0 :(得分:0)
尝试list=search
查询。例如:
(因为你说你只对匹配页面的数量感兴趣,我在查询中包含srlimit=1
和srprop=
以最小化返回的额外信息。显然没有办法保留API至少返回第一场比赛的标题; srlimit=0
只是给出了一条错误信息。)
至于查询限制,有limits on the number of results per query,但我不认为MediaWiki对您查询API的 rate 强制执行任何硬限制。 MediaWiki确实限制了编辑率,但我认为目前没有任何此类限制用于搜索。
我认为建议您按顺序运行查询 - 也就是说,在发送下一个查询之前等待上一个查询完成。这提供了一种自动速率限制,因为如果服务器繁忙,您的查询将需要更长时间才能完成。如果你想玩得很好,你也可以在你的查询中包含maxlag
parameter(如果失败,最好还是exponential backoff); maxlag机制实际上更多地设计用于自动编辑而不是用于搜索,但它确实至少确保您的代码在特别重载时不会访问维基媒体的服务器。
此外,如果您想对这些类型的查询进行批次,您可能需要考虑下载Wikipedia database dump并自行编制索引(正如您在问题中提到的那样)或者只是在一次通过中读取它并在遇到它们时计算匹配的页面。