【问题标题】:neo4j find nodes with similar connectionsneo4j 查找具有相似连接的节点
【发布时间】:2018-08-13 05:21:18
【问题描述】:

我试图找出以下问题:我有两个节点:Merchant:Customer。两者与:BUY 关系相关。 我试图找到具有相同:Customer 节点的:Merchant 节点,或者更好的是,共享90% 的:Customernodes。 谢谢。

【问题讨论】:

  • 你走了多远?
  • 什么意思?还没解决

标签: neo4j cypher graph-algorithm


【解决方案1】:

这对我有帮助: 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

据我了解,它使用 jaccard (https://en.wikipedia.org/wiki/Jaccard_index) 作为节点 ID。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 2021-10-27
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    相关资源
    最近更新 更多