我在我的python appengine项目中使用ndb
和search-api
查询。
我能找到的关于游标的唯一官方文档:
以下事情我不清楚:
答案 0 :(得分:6)
我从ndb
的角度回答,我还没有使用搜索API。所有报价均来自您的第一个链接。
对于1和3(因为从游标角度来看,排序被认为是原始查询的一部分):
要从光标点检索其他结果,请执行 应用程序准备具有相同实体类型的类似查询, 过滤器和排序顺序,并将光标传递给查询 执行检索之前的with_cursor()方法
因此光标的年龄(即查询的年龄)并不重要,因为必须恢复原始查询才能获得光标。
2:
游标和数据更新
光标的位置被定义为结果列表中的位置 在最后一个结果返回后。光标不是相对位置 清单(它不是抵消);它是Cloud Datastore的标记 在开始索引扫描结果时可以跳转。如果结果为 查询在使用游标之间进行更改,查询通知仅更改 在光标后的结果中出现。如果之前出现新结果 对于查询的光标位置,当它的时候不会返回 获取光标后的结果。同样,如果实体不是 查询的结果更长但是在光标之前出现了 光标不会改变后出现的结果。如果是最后的结果 return从结果集中删除,光标仍然知道如何 找到下一个结果。
检索查询结果时,可以同时使用开始游标和 结束游标从云返回一组连续的结果 数据存储。使用开始和结束光标检索结果时 你不能保证结果的大小是一样的 就像你生成游标一样。可以添加或删除实体 从生成游标的时间到云数据存储区 当它们用于查询时。
Limitations of cursors处的Java等效页面提到了一些可能因不一致而引发的错误:
新的App Engine版本可能会更改内部实施细节, 使依赖于它们的游标无效。如果应用程序尝试 要使用不再有效的游标,Cloud Datastore会引发一个
IllegalArgumentException
(低级API),JDOFatalUserException
(JDO),或PersistenceException
(JPA)。
我怀疑 Python也会引发一些类似的错误。