2015-09-28 34 views
1

我有一个网站我正在努力匹配基于共同兴趣或技能的人。我可以通过Cyper很容易地连接它们以找到其他人,但我想要做的是按照它们具有的通用连接数量来排序。如果A人与B人有10个共同利益,我希望他们在C人以上只与人共享4个共同利益。如果我还可以统计共同利益的数量,则可以得到奖励积分。谢谢!与最常见的连接节点

回答

2

尝试计算相交兴趣模式中关系的数量。例如:

MATCH (a:Person)-[r:INTERESTED_IN]->(:Thing)<-[:INTERESTED_IN]-(b:Person) 
    WHERE NOT a=b 
WITH a, b, count(r) AS commonInterestCount 
RETURN a.name, b.name, commonInterestCount ORDER BY commonInterestCount DESC 
+0

由于模式中的'a'和'b'没有区别,因此每个匹配为'a'的节点也将匹配为'b'。这没有错,但有时候是不可取的。如果是这样的话,添加一些关于特定节点的匹配('a:Person {pid:1}) - 或者做'WHERE ID(a)> ID(b)'来打破对称。 – jjaderberg