Neo4j基于多个标准匹配节点

时间:2016-03-29 14:46:17

标签: graph neo4j

我们正在使用Neo4j为快速约会类型的会议找到最佳匹配。在会议之前,每个人填写一份指定的表格:

  1. 语言(一个或多个)
  2. 位置(首选一到五个)
  3. 兴趣(一至五个利益)
  4. 我们已将数据存入Neo4j,因此人,语言,位置和兴趣都是节点类型。节点上的标签代表文字值,例如(人:戴夫) - > [R:知道] - GT;(语言:英语)。

    我们希望迭代所有Person节点,并找到与具有相同语言,位置和兴趣的其他Person节点的所有匹配。

    伪代码:语言(英语||西班牙语)&&位置(马里兰州|| DC ||弗吉尼亚州)&&兴趣(图书||电影||食品||体育)

    我对Cypher很新,所以我很感激任何帮助。谢谢!

1 个答案:

答案 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)),因为它无法使用限制