【问题标题】:Neo4j 2.0.1 pagination with SKIP/LIMIT returning repeated rowsNeo4j 2.0.1 分页与 SKIP/LIMIT 返回重复行
【发布时间】:2014-06-06 22:49:13
【问题描述】:

我对 Neo4j 为何以这种方式表现没有任何假设,所以我提供了基本的基本信息。如果您还需要什么,请询问。

我有以下查询,我认为上下文不是很重要。仅通过名称就可以掌握意图。

MATCH (e:Evidence)-[*2]->(t:Term) 
WHERE e.description =~ {regexp} OR t.description =~ {regexp} OR t.name =~ {regexp} 
OPTIONAL MATCH (e:Evidence)-[*2]->(t2:Term) 
WHERE t2.description =~ {regexp} OR t2.name =~ {regexp} 
WITH e, count(t2) AS termsFound 
ORDER BY termsFound DESC 
SKIP 0 LIMIT 10 
RETURN e;

对于用于 {regexp} 参数的某些关键字,查询返回 19 行(有和没有分页)。但是使用分页,查询会返回重复的 ID。

WITH    PAGINATION: 480,584,692,638,829,797,366,337,920,637,310,737,949,411,766,479,533,562,637
WITHOUT PAGINATION: 480,584,692,638,829,797,366,448,337,920,310,737,949,411,766,479,533,562,637

ID 为 637 的元素在两个页面的最后一行重复出现(页面的第 10 个 SKIP 0 LIMIT 10 和页面的第 9 个 SKIP 10 LIMIT 10)。

这真是奇怪的行为。发生这种情况的唯一假设是我的订单条件 (ORDER BY termsFound DESC) 对大多数行返回相同的数字 (1),这反过来又会使 Neo4j 无法选择正确的元素返回第二页。

编辑 1(特定版本)

spring.data.neo4j = 3.0.1.RELEASE

neo4j.kernel = 2.0.1

neo4j.cypher = 2.0.1

neo4j.cypher.dsl = 2.0.1

【问题讨论】:

  • 您使用的是哪个版本?
  • 按要求更新。感谢您的宝贵时间。

标签: neo4j


【解决方案1】:

根据 Michael Hunger 的要求检查了版本并更新为以下数字:

spring.data.neo4j = 3.1.0.RELEASE

neo4j.kernel = 2.0.3

neo4j.cypher = 2.0.3

neo4j.cypher.dsl = 2.0.1

不确定问题出在哪里,但足以解决问题。

【讨论】:

    猜你喜欢
    • 2018-08-18
    • 2019-10-22
    • 1970-01-01
    • 2019-09-02
    • 2023-01-19
    • 2021-05-16
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多