2

MQL を使用してランダム レコードを取得する方法がないため、最初にカウントを使用して取得しようとしています。

[{ "return": "count", "id": null, "name": null, "type": "/people/person"}]​

nの間のランダムなページ番号を使用します。この例では、多かれ少なかれ 2.000.000 レコード (1 ページあたり 50 レコードの 40.000 ページ) があります。次に、「ページ」プロパティを含むエンベロープを送信しています。また、n 番目のページで 50 レコードを取得するようにクエリを制限しています。0total / records per page

[{ "limit": 50, "id": null, "name": null, "type": "/people/person"}]​

封筒の内容:

{"page": n}

ただし、このクエリは、n > 50. の場合は恐ろしく遅くn > 100、(たとえば) のn > 2000場合は戻りさえしません。

ランダムなレコードを取得するためにできることはありますか? 何か不足していますか?

4

1 に答える 1

4

これを行うと、データベースは、必要なレコードまでカウントできるように、以前のすべてのレコードを取得する必要があります。それがとても遅い理由です。あなたができることがいくつかあります:

  1. Freebase データ ダンプを使用して、ランダムな人物の Freebase MID のリストを生成し、MQL を介してクエリを実行するか、タスク全体に使用します (どのような情報を取得しているかは明らかにしません)。
  2. 計算しやすい別の形式でランダム化の問題をキャストします。たとえば、最初にトピックのランダムな作成時間範囲 (1997 年から現在) を選択し、次にその時間範囲内に作成されたランダムな人物トピックを選択することができます。
于 2012-07-16T16:57:01.913 に答える