Neo4j的找到类似的连接节点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Neo4j的找到类似的连接节点相关的知识,希望对你有一定的参考价值。
我想弄清楚以下问题:我有两个节点:Merchant
和:Customer
。这两者是有关系:BUY
相关。我想找到具有相同:Merchant
节点,甚至更好:Customer
节点,这一比例让我们说90%的:Customer
nodes的。谢谢。
答案
这帮助了我: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
以上是关于Neo4j的找到类似的连接节点的主要内容,如果未能解决你的问题,请参考以下文章