获取随机记录时,Freebase MQL查询速度非常慢

时间:2012-07-16 16:24:48

标签: freebase mql

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

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

并在n0之间使用随机页码total / records per page。在此示例中,有大约2.000.000条记录(40.000页,每页50条记录)。 然后我发送一个带有“page”属性的信封,我也限制查询在第n页获得50条记录:

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

在信封中:

{"page": n}

但是,n > 50时此查询非常慢。 n > 100时速度非常慢,而n > 2000({1}}甚至没有返回。

我有什么办法可以获得随机记录吗?我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

执行此操作时,数据库必须获取所有早期记录,以便它可以计数到您想要的记录。这就是它如此缓慢的原因。您可以做几件不同的事情:

  1. 使用Freebase数据转储,为随机人员生成Freebase MID列表,然后通过MQL或整个任务查询(您没有说明要提取的信息)
  2. 以更容易计算的不同形式投射随机化问题。例如,您可能首先为主题选择随机创建时间范围(1997年至今),然后选择在该时间范围内创建的随机人员主题。