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

标签 freebase mql

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

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

并使用0每页总记录数之间的随机页码n。在此示例中,大约有 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. 使用 Freebase 数据转储,可以为随机人员生成 Freebase MID 列表,然后通过 MQL 进行查询,也可以为整个任务生成 Freebase MID 列表(您无需说明要获取哪些信息)
  2. 以更容易计算的不同形式呈现随机化问题。例如,您可以首先为主题选择一个随机创建时间范围(1997 年至今),然后选择在该时间范围内创建的随机人物主题。

关于获取随机记录时 Freebase MQL 查询非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11508467/

相关文章:

java - 如何配置 freebase java 客户端通过代理连接?

rdf - 在 Javascript 中从 Freebase RDF API 解析 Turtle

javascript - Freebase - Javascript 中的 MQL

google-api - Freebase搜索API

freebase - 是否有 Freebase 类型的分层表示?

javascript - 从类型返回所有​​内容 - Freebase MQL

freebase - 获取乐队成员

sparql - 使用 WikiData Sparql 高效查询抽象元素

javascript - JQuery 搜索不再有效

facebook - 有没有办法将 Facebook Graph 数据与其他数据源(Freebase、DBPedia)链接起来?