【问题标题】:Google App Engine Search for Go: How to paginate?Google App Engine Search for Go:如何分页?
【发布时间】:2015-05-07 23:43:28
【问题描述】:

如果我在 Google App Engine 搜索中查询 Go,例如对于前 10 个结果,如何进行后续查询以获取接下来的 10 个结果?没有我知道的游标。

【问题讨论】:

    标签: google-app-engine go


    【解决方案1】:

    编辑:好消息! 自从编写此答案以来,搜索 API 的游标已完成并发布,因此它已普遍可用。

    查看Cursor 类型。 Cursor 值可以在SearchOptions 中指定。因此,当您调用Index.Search() 时,您可以传递一个SearchOptions 和一个您之前从Iterator.Cursor() 获得的Cursor

    原答案如下。


    你运气不好。

    一般来说,搜索 API 支持游标(例如,请参阅 Java Using cursors)并且它也在 Go 中实现,但搜索的游标 API 不完整且未导出。

    有关证据,请参见 search/search.go 的来源:Iterator 类型(由 Index.List()Index.Search() 方法返回)有一个未导出的 searchCursor 字段(当前为 #602 行),这正是我们的想法它是,它是在内部使用的,它只是没有导出。

    如果您在同一源文件 (search/search.go) 中检查 SearchOptions 结构的来源(这是您在启动/执行搜索时可以传递给 Index.Search() 方法的内容):

    // Currently starts at line #464:
    type SearchOptions struct {
        ...
        // TODO: cursor, offset, maybe others.
    }
    

    因此有计划添加对搜索游标、偏移量等的支持,只是尚未实现和导出。希望会在未来的版本中添加。

    【讨论】:

    • 感谢您提供如此详细的回答。
    • 游标和偏移量现在似乎在 Github 上的源代码中实现了......知道什么时候可以在 GAE 上使用它吗?
    • 自编写以来,它已在 GAE 上可用(在经典的“appengine”包和 google.golang.org 的包中)
    猜你喜欢
    • 2014-08-07
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 2015-05-04
    • 2012-03-28
    • 2012-08-17
    相关资源
    最近更新 更多