计算neo4j中的节点深度

cl25kdpy  于 2022-11-05  发布在  其他
关注(0)|答案(3)|浏览(201)

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

相反(尝试在网页浏览器neo4j接口),neo4j返回多个关系,每个单词节点“n”如预期。你能帮我做错了什么吗,如何计算句子节点和单词节点之间的路径长度?谢谢。

zzzyeukh

zzzyeukh1#

我认为它查询返回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

nzkunb0c

nzkunb0c2#

终于自己找到了解决办法--那就是cypher的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

c8ib6hqw

c8ib6hqw3#

在4.x版本中,U应使用SIZE函数

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

https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-size

相关问题