【问题标题】:azure search work around $skip limit天蓝色搜索围绕 $skip 限制工作
【发布时间】:2018-12-06 15:02:26
【问题描述】:

我正在检查我的数据库中的所有记录是否都存在于 Azure 搜索中(大约 610k)。但是 $skip 参数有 100000 个限制。有没有办法绕过这个限制?

【问题讨论】:

    标签: azure azure-cognitive-search


    【解决方案1】:

    您不能分面超过 100K 文档,但是,您可以添加分面来解决此问题。例如,假设您有一个名为 Country 的构面,并且没有一个构面包含超过 100K 的文档。您可以对 Country == ‘Canada’ 的所有文档进行切面,然后对 Country == ‘USA’ 的所有文档进行切面……

    【讨论】:

      【解决方案2】:

      只是为了澄清其他答案:您不能直接绕过限制,但可以使用解决方法。

      您可以这样做:

      1) 向索引添加一个唯一字段。内容可以是修改时间戳(如果它足够细化以使其唯一)或例如一个流水号。或者,您可以为此使用一些现有的唯一字段。

      2) 从您的唯一字段排序的索引中获取前 100000 个结果

      3) 检查您的唯一字段结果中的最大值(如果按升序排序) - 所以最后一个条目的值

      4) 通过基于相同的唯一字段排序并添加一个过滤器来获取接下来的 100000 个结果,该过滤器仅在唯一字段的值大于前一个最大值的情况下获取结果。这样不会返回相同的前 100000 个值,但我们会得到接下来的 100000 个值。

      5) 继续,直到获得所有结果

      缺点是你不能对结果使用其他自定义排序,除非你在得到结果后进行排序。

      【讨论】:

        【解决方案3】:

        我使用数据metadata_storage_last_modified作为过滤器,下面是我的例子。

            offset           skip              time
             0         --%-->  0
             100,000   --%-->  100,000      getLastTime
             101,000   --%-->  0            useLastTime
             200,000   --%-->   99,000      useLastTime
             201,000   --%-->  100,000      useLastTime & getLastTime
             202,000   --%-->  0            useLastTime
        

        因为Skip限制是100k,所以我们可以计算skip

        AzureSearchSkipLimit = 100k
        AzureSearchTopLimit = 1k
        skip = offset % (AzureSearchSkipLimit + AzureSearchTopLimit)
        

        如果总搜索计数大于 AzureSearchSkipLimit,则应用

        orderby = "metadata_storage_last_modified desc"
        

        当跳过到达 AzureSearchSkipLimit 时,从数据末尾获取 metadata_storage_last_modified 时间。并将 metadata_storage_last_modified 作为下一个 100k 搜索过滤器。

        filter = metadata_storage_last_modified lt ${metadata_storage_last_modified}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多