【发布时间】: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