neo4j cypher:无法创建和使用索引

时间:2013-05-29 09:11:38

标签: indexing neo4j cypher

我想在neo4j 2.0上创建一些索引,但我无法理解这里有什么问题。从新数据库开始,我的输入命令看起来像

CREATE INDEX ON :user(name);
CREATE INDEX ON :root(root);
CREATE INDEX ON :origin(origin);
CREATE INDEX ON :gender(gender);
create (n1:root {root : 'root'}),(n2:gender {gender : 'female'}),(n3:gender {gender : 'male'}),(n4:origin {origin : 'english (modern)' }),(n5:origin {origin : 'finnish' }),(n6:user {name : 'aaliyah'}),(n7:user {name : 'aapeli'}),(n8:user {name : 'aapo'});

此时一切看起来都很好(请参阅下面的输出)但是当我尝试使用索引时出现错误:

neo4j-sh (0)$ start n=node:user(name="aapo") return n;
MissingIndexException: Index `user` does not exist

知道为什么会这样吗?请注意,在索引之前创建节点不会改变任何内容。

提前致谢

输出我的第一个命令:

neo4j-sh (0)$ CREATE INDEX ON :user(name);
+-------------------+
| No data returned. |
+-------------------+
Indexes added: 1
235 ms
neo4j-sh (0)$ CREATE INDEX ON :root(root);
+-------------------+
| No data returned. |
+-------------------+
Indexes added: 1
246 ms
neo4j-sh (0)$ CREATE INDEX ON :origin(origin);
+-------------------+
| No data returned. |
+-------------------+
Indexes added: 1
173 ms
neo4j-sh (0)$ CREATE INDEX ON :gender(gender);
+-------------------+
| No data returned. |
+-------------------+
Indexes added: 1
160 ms
neo4j-sh (0)$ create (n1:root {root : 'root'}),(n2:gender {gender : 'female'}),(n3:gender {gender : 'male'}),(n4:origin {origin : 'english (modern)' }),(n5:origin {origin : 'finnish' }),(n6:user {name : 'aaliyah'}),(n7:user {name : 'aapeli'}),(n8:user {name : 'aapo'});
+-------------------+
| No data returned. |
+-------------------+
Nodes created: 8
Properties set: 8
Labels added: 8
1027 ms

1 个答案:

答案 0 :(得分:8)

通过Cypher创建的索引称为Schema索引,不能在START子句中使用。 START子句索引查找是为您通过自动索引或通过非Cypher API创建的旧索引保留的。

要使用您创建的:user索引,您可以执行以下操作:

match n:user
where n.name="aapo"
return n;

使用profile尝试。