Neo4j:试图找到大多数关系的节点。没有这样的索引'错误

时间:2014-10-08 23:50:07

标签: neo4j graph-databases

我正在玩Neo4j并继续收到此错误。我做错了什么。

我的节点集如下所示

CREATE (p1:Person {name:"Hans"})
CREATE (p2:Person {name:"Anna"})
CREATE (p3:Person {name:"Klaus"})
CREATE (p4:Person {name:"Janna"})
CREATE (p5:Person {name:"Julia"})

CREATE (p1)-[:FRIENDS_WITH]->(p2)
CREATE (p1)-[:FRIENDS_WITH]->(p3)
CREATE (p1)-[:FRIENDS_WITH]->(p4)
CREATE (p1)-[:FRIENDS_WITH]->(p5)
CREATE (p2)-[:FRIENDS_WITH]->(p3)
CREATE (p3)-[:FRIENDS_WITH]->(p4)

我现在想找到拥有最多朋友的人

START n=node:Person('*:*')
MATCH (n)-[r]->(x)
RETURN n, COUNT(r)
ORDER BY COUNT(r) DESC
LIMIT 10

但我一直收到这个错误:

Index `Person` does not exist
Neo.ClientError.Schema.NoSuchIndex

感谢您的帮助!

修改

此查询正常运行。我仍然在想,"没有这样的索引"错误意味着

START n = node(*)
MATCH n<-[r:FRIENDS_WITH]->c
RETURN n.name, count(r) AS connections
ORDER BY connections DESC

1 个答案:

答案 0 :(得分:1)

您遇到了我们的一个重大API更改,我们将版本1.9中的索引从旧的start-syntax更改为标签和架构索引:

您的查询将如下所示:

MATCH (n:Person)-[r]->(x)
RETURN n, COUNT(r)
ORDER BY COUNT(r) DESC
LIMIT 10

如果您想按名称查找人员,您还应该创建架构索引:

create index on :Person(name);

然后再做

MATCH (n:Person)-[r]->(x)
WHERE n.name = "Hans"
RETURN n, COUNT(r)
ORDER BY COUNT(r) DESC
LIMIT 10