Google drive api 使用';不是';参数返回空页

Google drive api 使用';不是';参数返回空页,google-drive-api,Google Drive Api,我正在使用驱动器API列出集合中的文件,这些文件的标题中不包含特定字符串 我的查询如下所示: files().list(q=“'xxxxx'在父项中,而不是标题中包含'toto'”) 在我的驱动器集合中,我有100个文件,它们的标题中都包含字符串“toto”,比如说10个文件 我使用分页来检索20乘20的结果,所以我只希望得到一个页面,其中包含10个与我的请求相对应的文件。令人惊讶的是,API返回了5个页面,前4个页面没有结果,但有一个nextToken页面,而符合我请求的文件只有第五个页面 我

我正在使用驱动器API列出集合中的文件,这些文件的标题中不包含特定字符串

我的查询如下所示:
files().list(q=“'xxxxx'在父项中,而不是标题中包含'toto'”)

在我的驱动器集合中,我有100个文件,它们的标题中都包含字符串“toto”,比如说10个文件

我使用分页来检索20乘20的结果,所以我只希望得到一个页面,其中包含10个与我的请求相对应的文件。令人惊讶的是,API返回了5个页面,前4个页面没有结果,但有一个nextToken页面,而符合我请求的文件只有第五个页面

我还在这里尝试一些用例,但它似乎与“not”操作符有关。例如,如果请求是在没有它的情况下发出的,因此返回5页,但结果与从响应中删除的请求不对应。这对我来说是非常令人不安的,因为我在这里寻找最好的表现,显然,不得不提出5个驾驶要求而不是一个对我来说是不好的。我还注意到,结果并不总是出现在最后一页。我用另一个集合进行了测试,结果显示在第二页,但之后我仍然得到了3个空白页


我是不是遗漏了什么?这种行为“正常”吗?我的意思是想象一下,如果我的收藏中有1000个文档,必须发出50个请求才能找到其中的几个,这不是我所期望的。

contains
操作员目前正在充当前缀匹配器。
title包含“toto”
将匹配“tototolog”和“toto”,但不会匹配“blahtto”。

我在files.list API中也有类似的问题。我试图接收根文件夹下的所有三个文件夹。我只在第342页收到结果。经过几个小时的研究,我发现这种奇怪的行为有些规律

据我所知,驱动器API的工作方式如下:

  • 检测与查询最匹配的索引之类的内容
  • 使用步骤1中的索引选择前20条记录
  • 应用筛选器:删除与查询不匹配的记录
  • Rest将返回给您(可能为空),并带有下一页标记
  • 下一个getoken看起来就像决定索引中下一页的第一条记录的偏移量,可能它包含一些关于查询或索引的信息

    在base64解码这个令牌之后,我在解码令牌的第121位找到了下一个结果的适当记录号。 以前,我使用
    maxResults=1
    构建令牌索引

    这很疯狂,但我对可观察到的行为没有其他解释

    它对服务器非常有用,因为服务器只做很小的搜索工作。从另一方面来说,该算法必须为整个列表生成大量请求。但是每秒请求数的限制解决了这个问题

    只有页面管理和跳过空结果。不要忘记请求数量的限制。


    不要试图找出你这边的错误。这就是Google Drive API的工作原理。

    是的,你是对的,在某种程度上,如果驱动器API的性能可以接受,这种行为可能不会成为问题。不幸的是,情况并非如此。这太不一致了。。有时检索10条记录需要100毫秒,有时需要5秒钟,通常你会突然发现500个错误,因此基于这一点,我可以提出的请求越少越好。