1

ウィキペディアのウィキペディア記事のランダム化を管理するperlスクリプトをここで見つけました。コードはわずかにコンピューターで生成されたようです。私は現在MySQLに興味を持っているので、データベースにリンクと関連データがある可能性があると思いました。

MySQLはテーブル間の関係を維持するのに優れていることは知っていますが、Perlで簡単に実装できるようです。彼らの専門分野に線を引くのは、なんとなく曖昧な感じがします。それで:

MySQLとPerlを使用してウィキペディアの記事をランダム化するにはどうすればよいですか?

4

2 に答える 2

2

彼ら(ウィキペディア)がそれをどのように行うかを本当に知りたい場合は、MediaWikiから直接このコードを見てください:

http://svn.wikimedia.org/svnroot/mediawiki/trunk/phase3/includes/specials/SpecialRandompage.php

結局のところ、それはオープンソースソフトウェアです;)、そしてそれはそれの美しさです。

編集:コードを一目見ただけで、行の作成時に設定されたpage_randomというフィールドを使用していると確信しています。次に、これはインデックス付きフィールドであるため、制限1での順序付けは瞬時に行われます(もちろん、このアプリケーションで有効な、指定されたランダムオフセットを使用します)。

他の回答で述べたように、ORDER BY RAND()は非常に遅いため、これはランダムアクセスを高速化するための非常に標準的な方法です。

編集#2: OOPWikiMediaのコードがいかにクリーンで適切であるかが大好きです。間違いなくそれをブックマークして、PHP初心者に良いPHPコードがどのように見えるかを示します(そして自分自身に思い出させます)。

于 2009-07-04T19:05:56.857 に答える
1
SELECT id FROM articles ORDER BY RAND() LIMIT 1

もちろん、http://en.wikipedia.org/wiki/Special:Randomにリンクすることもできます。

于 2009-07-04T18:58:29.473 に答える