我建议你把它分成2个问题,这样每个问题都有自己的主题,以后的访问者更容易搜索。
那说:
问题 1
limit:
您可以通过添加到查询来增加每页获得的结果数量。无论如何,您将不得不使用分页。要使用分页,您需要将cursor
参数添加到您的mqlread
HTTP 请求中。同样:cursor
不是MQL 查询本身的一部分,而是提交它的 HTTP 信封。
对于第一个查询,发出一个空的cursor
,对于后续查询,使用cursor
mqlread 返回给您的值。
请注意,所有这些都需要使用 API 完成,而不是直接使用 freebase,因此 URL 需要:
https://www.googleapis.com/freebase/v1/mqlread?cursor=&query=[{"id":null,"name":null,"type":"/food/dish","limit":5}]
另请注意,如果您打算为测试以外的任何其他目的执行此操作,则需要从 Google 获取密钥。
最后,请注意 Freebase 中的某些字符串是“freebase 编码”的,请阅读有关如何在结果中对它们进行解码的内容。
问题2
如果您只想要成分名称,那么只需添加"/dining/cuisine/ingredients": []
到您的查询中。请注意,许多菜肴没有配料,但披萨有:
{
"id": "/m/0663v",
"name": null,
"type": "/food/dish",
"/dining/cuisine/ingredients": []
}
获取图像意味着添加"/common/topic/image": [{}]
到您的查询中,并使用id
为每个图像返回的结果。
从给定图像中获取图像 URLid
是通过https://usercontent.googleapis.com/freebase/v1/image/
在id
.
编辑
汤姆正确地指出我忘记了图像描述。每个图像的描述将name:
在返回的/common/topic/image
数组中提供。例如,对于查询
[{
"id": "/en/minestrone",
"/common/topic/image": [{
"id": null,
"name": null
}]
}]
您会得到以下图像及其描述:
{
"result": [{
"id": "/en/minestrone",
"/common/topic/image": [
{
"id": "/wikipedia/images/commons_id/1492185",
"name": "MinestroneSoup"
},
{
"id": "/wikipedia/images/commons_id/12565901",
"name": "Homemade minestrone"
}
]
}]
}
那么,您的最终 MQL 是:
[{
"id": null,
"name": null,
"type": "/food/dish",
"/common/topic/image": [{
"id": null,
"name": null
}],
"/dining/cuisine/ingredients": []
}]
...并且 HTTP 信封将包含一个键和一个值cursor
。