2013-05-29 29 views
1

我想在neo4j 2.0上創建一些索引,但我不明白這裏有什麼問題。一個全新的數據庫開始,我輸入的命令看起來像neo4j密碼:無法創建和使用索引

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 

回答

8

通過暗號所創建的索引被稱爲架構指標,而不是到START子句中使用。子句索引查找是爲通過自動索引或通過非Cypher API創建的舊索引保留的。

爲了使用:您創建用戶索引,你可以這樣做:

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

嘗試一下與profile

+0

好的,謝謝你的回答(我用'where'n.name ='替換'where name ='使它工作)。 這兩種方法的表現有差異嗎? – aherve

+0

這就是我的意思。對於那個很抱歉。 –