计算neo4j中的节点深度

时间:2014-09-28 21:46:36

标签: neo4j

我在Neo4j中有这个查询:

MATCH (sentence:Sentence)-[r*]->(n:Word )
WITH n, COUNT(r) AS c
RETURN n, c

我的图表是一个语言数据库,包含它们之间的单词和依赖关系。 此查询应返回节点深度,但COUNT(r)始终返回1。 当我省略COUNT函数并只写

WITH n, r AS c
而不是(尝试在web浏览器neo4j接口中),neo4j为每个单词节点返回多个关系" n"正如所料。 你能帮我解决一下我做错了什么,如何统计句子节点和单词节点之间的路径长度?感谢。

2 个答案:

答案 0 :(得分:2)

我认为它查询返回n和c并且有多个n记录,所以count(r)返回1。

试试这个 -

MATCH (sentence:Sentence)-[r*]->(n:Word )
WITH n, LENGTH(r) AS depth
RETURN n, depth

你会得到这样的深度。

或试试这个

   MATCH p= (sentence:Sentence)-->(n:Word)    
   RETURN n, length(p) as depth

http://docs.neo4j.org/chunked/stable/query-functions-scalar.html#functions-length

答案 1 :(得分:0)

最后我自己找到了解决方案 - 它是密码的LENGTH函数:

MATCH (sentence:Sentence)-[r*]->(n:Word )
WITH n, LENGTH(r) AS c
RETURN n, c

在这个有用的备忘单中找到:http://assets.neo4j.org/download/Neo4j_CheatSheet_v3.pdf