1

我正在尝试使用 Freebase 一次搜索多个项目(使用一个 API 调用)。例如,如果我有两个项目:

  1. 小罗伯特唐尼
  2. 复仇者

我想查询一次 Freebase 并获取这两个项目的结果。基本上,我需要的只是这两个项目的前 3 或 4 个结果的中间值。我想依靠 Freebase 的搜索 API 来为主题提供消歧。例如,我希望能够搜索“小罗伯特·唐尼”。缩写:“RDJ”。

一次搜索一项时,这很容易做到:

https://www.googleapis.com/freebase/v1/search?query=rdj

像这样打两个电话会给我我正在寻找的东西,但我想远离单独打这些电话。

和解

我确实遇到了 json-rpc 调和调用,我尝试了以下方法:

端点:https ://www.googleapis.com/rpc

帖子正文:

[
{
    "method": "freebase.reconcile",
    "apiVersion": "v1",
    "params": {
        "name": ["RDJ"],
        "key": "api_key",
        "limit":10
    }
},
{
    "method": "freebase.reconcile",
    "apiVersion": "v1",
    "params": {
        "name": ["the avengers"],
        "key": "api_key",
        "limit":10
    }
}
]

这对小罗伯特唐尼来说非常有效,因为我得到了 /film/actor 类型的结果,就像我使用搜索 api 所做的那样。然而,对于复仇者联盟,我得到了一组类型为 /book/book 而不是 2012 年电影的结果。这些结果的优先级似乎与搜索结果不同。

我尝试使用 json-rpc 进行类似的 Freebase 搜索方法:

{
"method": "freebase.search",
"apiVersion": "v1",
"params": {
    "name": ["RDJ"],
    "key": "api_key",
    "limit":10
}
}

但是“freebase.search”方法似乎并不存在。

需要注意的一件事是,我不会事先知道我正在寻找的物品的预期类型。

长话短说:我想要搜索 API 提供的确切结果,但在一次调用中包含多个查询。

我是否错过了一些非常简单的东西,比如搜索 API 的 OR 运算符?我一直在寻找几天,但似乎无法找到一个好的解决方案。我将不胜感激任何帮助!

4

1 回答 1

0

为什么不异步进行两次调用呢?这将为您提供所需的结果,而延迟几乎没有损失。

一些相关事实:

  • Reconcile API 仍处于试验阶段。它旨在用于至少与一种类型进行协调,并且通常使用其他属性值进行评分。

  • Search API 不包含在 RPC 机制中,因为它的自由格式输出不适用于 RPC 框架的假设。Topic API 也是如此,尽管这在这里并不真正相关。

  • 搜索 API 具有相当富有表现力的 S 表达式语言。您没有说您是否希望查询单独或一起评分,但如果您希望它们联合排名,您可以使用过滤表达式,如[(any name:rdj name:"The Avengers")] https://www.googleapis.com/freebase/v1/search?query=&limit= 10&filter=%28any%20name:rdj%20name:%22the%20avengers%22%29

于 2013-05-23T02:26:48.753 回答