我想在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
答案 0 :(得分:8)
通过Cypher创建的索引称为Schema索引,不能在START
子句中使用。 START
子句索引查找是为您通过自动索引或通过非Cypher API创建的旧索引保留的。
要使用您创建的:user索引,您可以执行以下操作:
match n:user
where n.name="aapo"
return n;
使用profile
尝试。