由约束创建的Neo4j索引

由约束创建的Neo4j索引,neo4j,cypher,Neo4j,Cypher,我仍在努力解决速度问题(如图所示:) 我注意到的一件事是,当我导入具有唯一约束的数据时(通过下面的例子证明) neo4j sh(?)$createindex on:Person(用户名) QueryExecutionKerneleException:标签“Person”和属性“username” 在它们上定义了唯一约束,因此索引已经存在 创建与此匹配的 当我尝试在shell中查看索引时,我得到以下结果: neo4j sh(?)$索引--索引 节点索引: 关系索引: 是否不应该显示自动生成的索引?

我仍在努力解决速度问题(如图所示:)

我注意到的一件事是,当我导入具有唯一约束的数据时(通过下面的例子证明)

neo4j sh(?)$createindex on:Person(用户名)

QueryExecutionKerneleException:标签“Person”和属性“username” 在它们上定义了唯一约束,因此索引已经存在 创建与此匹配的

当我尝试在shell中查看索引时,我得到以下结果:

neo4j sh(?)$索引--索引
节点索引:

关系索引:

是否不应该显示自动生成的索引?如何验证唯一约束实际上正在为用户名编制索引

主要的问题(如上面的链接所示)是,下面的简单查询需要36秒(对于一个急切的调用)和两倍于切换到一个非急切的调用的时间

USING PERIODIC COMMIT 15000
LOAD CSV WITH HEADERS FROM "file:d:/messages.csv" AS line
MATCH (a:Geotagged { username: line.sender }) - [r:MSGED] -> (b:Geotagged { username: line.recipient })
RETURN NULL;
注意,这不包括我最初尝试使用的SET调用,我删除了它,仅匹配一项就要花费很长时间

此外,我还将pagecache增加到我需要的几倍,并且没有看到任何变化

编辑1
标记为“Geotaged”的节点也标记为“Person”。所有节点都是“个人”,有些节点恰好也是“地理标记的”。

您是否对地理标记标签和个人标签使用了唯一性约束?我发现两个标签上的唯一性约束大大提高了速度。

您是否将唯一性约束与地理标记标签以及个人标签一起使用?我发现两个标签上的唯一性约束大大提高了速度。

您正在使用
index
命令处理遗留索引,使用
schema
列出架构索引和约束

此外,如果您通过
:地理标记(用户名)
进行匹配,则必须为该组合创建索引:

 create index on :Geotagged(username);

或者改为在
:Person(username)
上进行匹配。

您正在使用
index
命令进行旧索引,使用
schema
列出架构索引和约束

此外,如果您通过
:地理标记(用户名)
进行匹配,则必须为该组合创建索引:

 create index on :Geotagged(username);

或者改为匹配
:Person(username)

我的导入/上载过程是对Person:username设置唯一约束,然后上载所有内容,所有内容都在Person标签下。在同一个查询中,我有一系列CASE-WHEN+FOREACH语句,它们检查节点属性并向其添加特定标签。你是说我可能需要限制每个标签?是的。我也有类似的问题。我的第二个标签只有3个选择,不知道你要添加多少。我发现为三个次要标签中的每一个添加唯一性约束都会以指数方式提高速度。我的导入/上载过程是在Person:username上设置唯一性约束,然后上载所有内容,所有内容都在Person标签下。在同一个查询中,我有一系列CASE-WHEN+FOREACH语句,它们检查节点属性并向其添加特定标签。你是说我可能需要限制每个标签?是的。我也有类似的问题。我的第二个标签只有3个选择,不知道你要添加多少。我发现为三个二级标签中的每一个添加唯一性约束可以成倍地提高速度。Michael,谢谢!我一直在努力解决这个问题。有没有办法在已经存在的节点上创建索引?似乎createindex命令只是添加索引,实际上并没有索引节点。我启动了一个writeup,如果这对你有帮助,你能给我一些反馈吗?架构索引还将始终使用该标签和属性组合对现有节点进行索引。嗨,Michael,我很乐意查看它并提供反馈,但我无法访问该文档,我认为URL不正确?我运行了“创建索引:地理标记(用户名)”并在不到一秒钟的时间内完成了该操作,就好像没有要索引的节点一样。应该在所有现有节点上建立索引的?我想那需要几分钟?迈克尔,谢谢!我一直在努力解决这个问题。有没有办法在已经存在的节点上创建索引?似乎createindex命令只是添加索引,实际上并没有索引节点。我启动了一个writeup,如果这对你有帮助,你能给我一些反馈吗?架构索引还将始终使用该标签和属性组合对现有节点进行索引。嗨,Michael,我很乐意查看它并提供反馈,但我无法访问该文档,我认为URL不正确?我运行了“创建索引:地理标记(用户名)”并在不到一秒钟的时间内完成了该操作,就好像没有要索引的节点一样。应该在所有现有节点上建立索引的?我想那需要几分钟?