wikipedia.com上的“随机文章”功能

时间:2009-07-16 10:41:52

标签: random wiki

我想知道维基百科用什么算法和用什么编程语言来随机选择要显示的文章。

我还想知道它如何运作如此之快?

4 个答案:

答案 0 :(得分:6)

Here's 有关此事的信息。

  

每个文章在创建时都会被指定一个介于0和1之间的随机数(这些是在SQL中编制索引的,这使得选择速度很快)。单击随机文章时,它会生成目标随机数,然后返回记录的随机数最接近此目标的文章。

如果您有兴趣,可以阅读实际代码here

答案 1 :(得分:3)

Something along this lines

 "SELECT cur_id,cur_title
        FROM cur USE INDEX (cur_random)
        WHERE cur_namespace=0 AND cur_is_redirect=0
        AND cur_random>RAND()
        ORDER BY cur_random
        LIMIT 1"

答案 2 :(得分:2)

来自MediaWiki.org

  

MediaWiki是一个免费的软件维基   最初用 PHP 编写的包   用于维基百科。现在使用它   通过其他几个项目   非盈利的维基媒体基金会和   许多其他wiki,包括这个   网站,MediaWiki的主页。

MediaWiki是开源的,因此您可以下载代码并进行检查,看看他们是如何实现此功能的。

答案 3 :(得分:1)

如果查看the source,他们会使用PHP / MySQL进行排序,并通过预生成的随机值(page_random列)过滤页面,这些值具有索引。