Neo4j 通过共享子节点查找最相似的节点
我试图通过它们共享的子节点找到与另一个节点最相似的节点,然后列出它们共享的节点 例如,我有:Neo4j 通过共享子节点查找最相似的节点,neo4j,cypher,Neo4j,Cypher,我试图通过它们共享的子节点找到与另一个节点最相似的节点,然后列出它们共享的节点 例如,我有: N1-[has]->A N1-[has]->B N1-[has]->C N1-[has]->D N2-[has]->A N2-[has]->B N2-[has]->E N2-[has]->F N3-[has]->A N3-[has]->B N3-[has]->C N3-[has]->G 然后我想检查哪个节点与N1的子节点最相似
N1-[has]->A
N1-[has]->B
N1-[has]->C
N1-[has]->D
N2-[has]->A
N2-[has]->B
N2-[has]->E
N2-[has]->F
N3-[has]->A
N3-[has]->B
N3-[has]->C
N3-[has]->G
然后我想检查哪个节点与N1的子节点最相似。
它应该是N3,因为它们共享3个子节点
现在我可以使用
match (n1:Node {name: "some name"})-[:HAS]->(i)<-[:HAS]-(n2:Node)
with n2.name as n, count(*) as c
return n order by c desc limit 1
match(n1:Node{name:“some name”})-[:HAS]->(i)您可以尝试使用将类似节点存储到集合中,然后返回它:
match (n1:Node {name: "some name"})-[:HAS]->(i)<-[:HAS]-(n2:Node)
with n2.name as n, collect(i) as similarNodes, count(*) as c
return n, similarNodes
order by c desc limit 1
match(n1:Node{name:“some name”})-[:HAS]->(i)欢迎您!谢谢你接受了答案@钢球