Google Search API QueryOptions和SortOptions限制

问题描述 投票:1回答:1

我无法理解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我限制为1000个结果,即使SortOptions可以返回10000个结果?

或者只返回前1000个所有文件?

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

java google-app-engine google-cloud-platform
1个回答
2
投票

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

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

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

  • SortOptions.limit - 在创建视图时使用;
  • QueryOptions.limit - 从视图中选择数据时。
© www.soinside.com 2019 - 2024. All rights reserved.