2

因为没有办法使用 MQL 获取随机记录,所以我尝试先使用计数来获取它:

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

并使用和n之间的随机页码。在此示例中,大约有 2.000.000 条记录(40.000 页,每页 50 条记录)。然后我发送一个带有“page”属性的信封,并且我还将查询限制为在第 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 回答