分页的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 (将#修改为@)