Neo4j的找到类似的连接节点

问题描述 投票:0回答:1

我想弄清楚以下问题:我有两个节点:Merchant:Customer。这两者是有关系:BUY相关。我想找到具有相同:Merchant节点,甚至更好:Customer节点,这一比例让我们说90%的:Customernodes的。谢谢。

neo4j cypher graph-algorithm
1个回答
0
投票

这帮助了我:https://neo4j.com/docs/graph-algorithms/current/algorithms/similarity-jaccard/

重要的是,要比较的所有节点都在同一个图形和连接。

MATCH (p:Person)-[:LIKES]->(cuisine)
WITH {item:id(p), categories: collect(id(cuisine))} as userData
WITH collect(userData) as data
CALL algo.similarity.jaccard.stream(data)
YIELD item1, item2, count1, count2, intersection, similarity
RETURN algo.getNodeById(item1).name AS from, algo.getNodeById(item2).name AS to, intersection, similarity
ORDER BY similarity DESC

应该是这样的,(这取决于你的分贝)

MATCH (p:Merchant)-[:BUY]->(consumer)
WITH {item:id(p), categories: collect(id(consumer))} as userData
WITH collect(userData) as data
CALL algo.similarity.jaccard.stream(data)
YIELD item1, item2, count1, count2, intersection, similarity
WHERE similarity > 0.9
RETURN algo.getNodeById(item1).name AS from, algo.getNodeById(item2).name AS to, intersection, similarity
ORDER BY similarity DESC

按照我的理解它采用了捷卡(https://en.wikipedia.org/wiki/Jaccard_index)到节点的ID。

PS:它安装插件的使用是很重要的:https://neo4j.com/docs/graph-algorithms/current/introduction/#_installation

© www.soinside.com 2019 - 2024. All rights reserved.