2

我有一个 JAVA 程序,它向 Google Books API 发送 HTTP GET 消息。我想获得符合搜索条件“烹饪”的书籍。响应中的最大项目数是 40,这是我在 GET 消息中设置的数字。

https://www.googleapis.com/books/v1/volumes?q=cooking&projection=full&startIndex=0&maxResults=40&key=/*My Key*/

在我得到的响应中,“totalItem”的值约为 450。这看起来非常错误,因为在谷歌图书 GUI 或“烹饪”中搜索会产生 580 万个结果。

有谁知道为什么会这样?

第二个问题:我发送的第一个请求要求索引 0-39 中的结果,之后是 40-79... 直到 1000。1000 是此 API 的curtesy 查询的每日限制。出于某种原因,每次我获取 JSON 文件时,“totalItem”值都是不同的!总是在 450 左右,
但我认为那里没有一致性。

有人知道吗?

4

2 回答 2

3

检索到的 totalItems 实际上是openSearch:totalResults. 根据openSearch 规范

“totalResults”元素

当前搜索可用的搜索结果数。

如果页面上没有出现 totalResults 元素,则搜索客户端应将当前页面视为搜索结果的最后一页。

限制:该值必须是非负整数。默认值:默认值等于当前页面最后一个搜索结果的偏移索引。要求:该元素可能出现零次或一次。

但是,这不适用于此 API,如果您将 maxResults 减少到 1,您的 totalItems 将飙升至 590s。谷歌文档中没有任何内容明确说明这一点。我得到的最接近的是youtube API 文档

该标记标识提要的结果集中的项目数。请注意,标签值是近似值,可能不代表精确值。此外,此标签的最大值为 1,000,000。您不应使用此值来创建分页链接。

你需要totalItems分页吗?

于 2011-09-01T07:29:26.310 回答
0

要回答关于书籍 api 和书籍 GUI 之间的搜索结果的第一个问题,请参阅以下主题。与 GUI 搜索中的内容和元数据以及 api 中的元数据有关。

http://www.google.com/support/forum/p/booksearch-apis/thread?tid=38628f43b3bf6ee4&hl=en

于 2011-09-14T20:59:14.247 回答