Python 应用程序引擎光标限制

Python 应用程序引擎光标限制,python,google-app-engine,search,indexing,cursor,Python,Google App Engine,Search,Indexing,Cursor,我正在使用应用程序引擎遍历大型结果集。如果每次检索1000条记录,那么一切都很好,直到我达到了一个神奇的数字,即总共250156个文档(我知道索引中有更多的文档与查询条件相匹配)。前250个请求中的每一个都返回一个游标,该游标可成功用于检索下一组1000个结果。链中的最后一个请求在结果中返回156个文档,没有下一个游标 为了查看链上连续搜索请求的数量是否有限制,我将结果限制设置为500个文档,而不是100个。500个请求通过后,与第501个请求相同的行为返回156条记录,并且没有下一个游标 我是

我正在使用应用程序引擎遍历大型结果集。如果每次检索1000条记录,那么一切都很好,直到我达到了一个神奇的数字,即总共250156个文档(我知道索引中有更多的文档与查询条件相匹配)。前250个请求中的每一个都返回一个游标,该游标可成功用于检索下一组1000个结果。链中的最后一个请求在结果中返回156个文档,没有下一个游标

为了查看链上连续搜索请求的数量是否有限制,我将结果限制设置为500个文档,而不是100个。500个请求通过后,与第501个请求相同的行为返回156条记录,并且没有下一个游标

我是否遇到了一些未记录的限制?基本上,我在taskqueue中循环,限制=1000(或500):


任何关于限制的想法或文档都会很好。

您是否绝对确定您不是简单地达到了结果的末尾?就像在谷歌的搜索结果中一样,你认为你拥有的任何更大的数字实际上都只是一个估计值?(我相信你以前也遇到过这样的情况:你做了一次搜索,它显示了一些奇怪的特定结果,发现了大量结果,但如果你坐在那里翻阅结果,你最终只能看到最初承诺的数字的一小部分。)你能添加或删除一个文档,看看数字是否发生了变化吗?是的,我绝对肯定。我在BigQuery中有相同的数据集,可以从中获取计数。此外,我还尝试了完全独立的查询,在250156条记录上有不同的预期结果,两条记录都返回了那么多结果。我确信这与SearchResults.number\u found()无关,如果结果大于number\u found\u准确性查询参数,这只是一个估计值。@Martha,我喜欢你删除当前结果中的记录以查看行为的想法。我这样做了,结果确实少了一条记录。进一步调查其他查询。。。注意:我意识到我在上面错误地报告了计数。我所说的250156应该是250126。经过多次查询,我发现游标的功能与预期一致,即使文档总数超过460k。我不知道是什么原因导致了这次提交,但很明显,这并不是最初怀疑的应用程序引擎游标限制。我认为原问题将被关闭。对于那些对基于参数“limit”和“number\u found\u accurity”的应用程序引擎查询性能的伟大研究感兴趣的人,请参见[Stucky 2014]()。感谢@Martha提出的简单有效的想法。
options = search.QueryOptions(limit=limit, number_found_accuracy=10000,
    cursor=next_cursor, ids_only=True)

query = search.Query(query_string=q, options=options)
namespace = namespace_manager.get_namespace()

results = search.Index(name=index_name,
    namespace=namespace).search(query)

recs = len(results.results)
next_cursor=results.cursor