如何计算与特定节点相关的所有其他节点
How do I count all the other nodes related to a specific node
路径代表用户浏览历史.
上面的路径表示有一个用户浏览过页面A -> 页面B -> 页面C
下面的路径表示,一个用户浏览了页面X->页面Y->页面B->页面C
例如,如果我想计算与页面C
的相关性
预期的答案在 table
或者如果我想找到与页面 B
的所有相关性
答案应该是
- A 页:1
- 第 X 页:1
- 第 Y 页:1
- C 页:0
如何使用 py2neo 或 cypher query
获得预期的答案
如果您的 "b" 节点是不同的节点,因此您有完整的不同路径,则此查询有效:
MATCH (b:Page)
WHERE b.id = 'b'
MATCH (b)<-[:LINK_TO*..10]-(referer)
RETURN referer.id, count(*)
结果:
y 1
a 1
x 1
在此处测试控制台http://console.neo4j.org/r/sb5qmq
将 'b'
更改为 c
以查看 b 的计数为 2
b 2
y 1
a 1
x 1
编辑
如果你的节点'b'相同,你可以这样做:
MATCH (b:Page { id:'b' })
WITH b
MATCH (p:Page)
WHERE p <> b
OPTIONAL MATCH (p)-[r:LINK_TO*..3]->(b)
RETURN p.id, count(r)
路径代表用户浏览历史.
上面的路径表示有一个用户浏览过页面A -> 页面B -> 页面C
下面的路径表示,一个用户浏览了页面X->页面Y->页面B->页面C
例如,如果我想计算与页面C
的相关性预期的答案在 table
或者如果我想找到与页面 B
的所有相关性答案应该是
- A 页:1
- 第 X 页:1
- 第 Y 页:1
- C 页:0
如何使用 py2neo 或 cypher query
获得预期的答案如果您的 "b" 节点是不同的节点,因此您有完整的不同路径,则此查询有效:
MATCH (b:Page)
WHERE b.id = 'b'
MATCH (b)<-[:LINK_TO*..10]-(referer)
RETURN referer.id, count(*)
结果:
y 1
a 1
x 1
在此处测试控制台http://console.neo4j.org/r/sb5qmq
将 'b'
更改为 c
以查看 b 的计数为 2
b 2
y 1
a 1
x 1
编辑
如果你的节点'b'相同,你可以这样做:
MATCH (b:Page { id:'b' })
WITH b
MATCH (p:Page)
WHERE p <> b
OPTIONAL MATCH (p)-[r:LINK_TO*..3]->(b)
RETURN p.id, count(r)