微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

分页的neo4j结果的内存缓存

如何解决分页的neo4j结果的内存缓存

neo4j 版本:3.5(无法升级到 4.0,因为与某些 apoc 库有些不兼容)

我之前问过一个关于分页的问题,到目前为止它有效。我唯一担心的是与之前的帖子 (cypher pagination total result count) 相同的问题,其中要实现分页,需要 2 个查询

5 年前 (Neo4j query result cache) 提出了一个类似的问题,我想知道同样的约束是否仍然适用于 3.5 版?我要求这样做的原因是我发现与我的分页方法不一致。

我的查询结构是这样的(neo4jclient 可以处理它的方式)

   MATCH (required match queries)    // let's refer this as requiredMATCH
    CALL apoc.cypher.run( requiredMATCH ) YIELD VALUE
      WITH fields_from_required_match,VALUE.recordCount AS total ORDER BY sortvalue // establishing the sort
         SKIP X LIMIT Y
            OPTIONAL (optional match queries)
               WITH { a,b,c } AS MyObjects,total
                  RETURN collect(distinct MyObjects),total

因此,如果您注意到,requiredMATCH 查询会执行两次。我将 SKIP/LIMIT 放在可选匹配之前,这样我们就可以指定我们只为可选匹配获取的记录范围。我在这里遇到的问题是,如果我的 MATCH 查询结果超出限制,则不会被拾取。

假设我有一个匹配结果并且它在第 12 个索引中,如果我执行 SKIP 0,LIMIT 10,结果将为 0。如果我执行 SKIP 0,LIMIT 50,结果将为 1。

所以我的问题是:

  1. 有没有办法缓存 requiredMATCH 查询的结果并使用该缓存来获取总数、跳过和限制结果?
  2. 当我的代码有效时,我认为没有问题。但考虑到我在返回 SKIP 和 LIMIT 结果集时遇到问题,在构建查询时是否会遗漏任何内容

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。