我正在尝试使用 Freebase 一次搜索多个项目(使用一个 API 调用)。例如,如果我有两个项目:
- 小罗伯特唐尼
- 复仇者
我想查询一次 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 运算符?我一直在寻找几天,但似乎无法找到一个好的解决方案。我将不胜感激任何帮助!