Google Search API QueryOptions和SortOptions限制

时间:2018-09-03 02:53:06

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

我无法理解Google Search 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可以返回10000个结果,但是如果我想使用SortOptions,我也只能获得1000个结果?

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

我担心一旦我用光标到达1000个文档的末尾,即使有1000多个文档,也不会再返回任何内容。

1 个答案:

答案 0 :(得分:2)

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

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

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

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