我们正在使用Neo4j为快速约会类型的会议找到最佳匹配。在会议之前,每个人填写一份指定的表格:
我们已将数据存入Neo4j,因此人,语言,位置和兴趣都是节点类型。节点上的标签代表文字值,例如(人:戴夫) - > [R:知道] - GT;(语言:英语)。
我们希望迭代所有Person节点,并找到与具有相同语言,位置和兴趣的其他Person节点的所有匹配。
伪代码:语言(英语||西班牙语)&&位置(马里兰州|| DC ||弗吉尼亚州)&&兴趣(图书||电影||食品||体育)
我对Cypher很新,所以我很感激任何帮助。谢谢!
答案 0 :(得分:0)
尝试这样的事情
Match (p:Person) with p
// skip 0 limit 1000 -optional if you have big data
Match (p)-[r:SPEAKS]->(l:Language)<-[r2:SPEAKS]-(p2:Person),
(p)-[r3:LIVES]->(l:Location)<-[r4:LIVES]-(p2),
(p)-[r5:LIKES]->(l:Interest)<-[r6:LIKES]-(p2)
where id(p) < id(p2)
Return distinct p, p2
您可能会使用不同的方法来排除重复项(id(p)&lt; id(p2)),因为它无法使用限制