1

我想在 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
4

1 回答 1

8

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

为了使用您创建的 :user 索引,您可以这样做:

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

试试看profile

于 2013-05-29T13:43:35.390 回答