Neo4j 2.0.1与SKIP / LIMIT分页返回重复的行

时间:2014-06-06 22:49:13

标签: neo4j

我没有任何关于为什么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的元素在两个页面的最后一行中重复(页面跳过0限制10的第10行和页面跳过10限制10的第9行)。

这真是奇怪的行为。为什么会发生这种情况的唯一假设是我的订单条件(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

1 个答案:

答案 0 :(得分: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

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

相关问题