【问题标题】:Google Search API QueryOptions and SortOptions LimitsGoogle 搜索 API QueryOptions 和 SortOptions 限制
【发布时间】:2019-02-08 02:12:39
【问题描述】:

我无法理解 Google 搜索 API 中的“限制”。

docs 显示此示例:

  // Build the SortOptions with 2 sort keys
  SortOptions sortOptions =
      SortOptions.newBuilder()
          .addSortExpression(
              SortExpression.newBuilder()
                  .setExpression("price")
                  .setDirection(SortExpression.SortDirection.DESCENDING)
                  .setDefaultValueNumeric(0))
          .addSortExpression(
              SortExpression.newBuilder()
                  .setExpression("brand")
                  .setDirection(SortExpression.SortDirection.DESCENDING)
                  .setDefaultValue(""))
          .setLimit(1000)
          .build();

  // Build the QueryOptions
  QueryOptions options =
      QueryOptions.newBuilder()
          .setLimit(25)
          .setFieldsToReturn("model", "price", "description")
          .setSortOptions(sortOptions)
          .build();

SortOptions 的限制描述为:

要评分和/或排序的最大对象数。不能超过 10,000。默认值:1,000

QueryOptions 的限制描述为:

文档将限制解释为:最大文档数 在结果中返回。默认值:20 最大:1000

我个人希望通过分页返回尽可能多的结果。注意:我使用的是光标。

这是否意味着如果我想使用QueryOptions,即使SortOptions 可以返回 10000 个结果,我也只能得到 1000 个结果?

还是返回所有文档只排序前 1000 个?

我担心一旦我用光标到达 1000 个文档的末尾,即使超过 1000 个文档也不会返回。

【问题讨论】:

    标签: java google-app-engine google-cloud-platform


    【解决方案1】:

    您总是只能从排序集中获得前 1000 个文档,因为 QueryOptions 和 SortOptions(及其限制)控制提取结果流的不同阶段。

    SortOptions.limit 在准备结果集时通知索引引擎使用有限的文档集。但是当您从索引接收文档时使用 QueryOptions.limit。

    例如,想象下一个类似于 RDBMS 的情况:您需要创建复杂的请求,并使用 top/limit 创建排序视图。在这种情况下:

    • SortOptions.limit - 创建视图时使用;
    • QueryOptions.limit - 当您从视图中选择数据时。

    【讨论】: