2009-07-16 84 views

回答

6

Here's关于这方面的信息。

当创建它时,每篇文章都会被分配一个介于0和1之间的随机数(这些数据在SQL中进行索引,这使得选择更快)。当您点击随机文章时,它会生成一个目标随机数,然后返回记录的随机数最接近此目标的文章。

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

+0

它如何返回记录的随机数最接近此目标的文章?你认为它先排序整个表格吗? – 2009-07-16 10:48:04

2

MediaWiki.org

链接到MediaWiki是一个免费的软件wiki 包写在PHP,原本 为维基百科的使用。现在由 非营利维基媒体基金会的其他几个项目,并通过 许多其他的维基,包括本 网站的MediaWiki家庭中使用 。

MediaWiki是开源的,所以你可以下载代码并检查它,看看它们是如何实现这个功能的。

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" 
1

如果你看一下the source,他们使用PHP/MySQL的排序,并通过对他们的索引预生成的随机值(page_random列)筛选器的网页。