首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Neo4j图db中查找组

在Neo4j图db中查找组
EN

Stack Overflow用户
提问于 2013-09-20 13:00:16
回答 1查看 476关注 0票数 0

我在我的项目中使用Neo4j。

在我的图DB中,我有两种类型的节点:

  1. 人物
  2. 水果

人节点可以通过关系连接,朋友,人节点与水果节点连接,如果他们喜欢的话。

我想找一组三人喜欢的人,比如苹果、桃子和橘子,至少有路从一个人到第三个亲戚“朋友”,或者所有三个人都是朋友。

由于我最近才开始使用neo4j,我需要Guru的帮助才能找到解决方案。

我的想法是:

找出喜欢苹果的人,找出喜欢桃子的人,找出喜欢橘子的人。

从这3组中找出现有的节点-rel-节点-rel.从其中一组开始的路径,经过第二组,最后在第三组结束。

请您确认我的方法是否正确和最优,是否可以通过Cypher或py2neo实现?

无法找到共享的方法,但可以在这里粘贴查询。如果将其粘贴回console.neo4j.org,您将得到一个图形:

CREATE (Neo { name:'Neo' }),(Morpheus { name: 'Morpheus' }),(Trinity { name: 'Trinity' }),(Cypher { name: 'Cypher' }),(Apple { fruit: 'Apple' }),(Peach { fruit: 'Peach' }),(Banana { fruit:'Banana' }), root-[:ROOT]->Neo, Neo-[:KNOWS]->Morpheus, Neo-[:KNOWS]->Trinity, Morpheus-[:KNOWS]->Cypher, Neo-[:LIKES]->Peach, Trinity-[:LIKES]-Banana, Morpheus-[:LIKES]-Apple

假设你在提到的网站上看到了模型。所以在这里我需要搜索喜欢的人(桃子,香蕉,苹果),因此我想要得到新,三一和墨菲斯,因为新喜欢桃子,三一喜欢香蕉和墨菲斯喜欢苹果,他们之间有某种联系( Neo同时知道墨菲斯和三位一体,甚至tho三位一体也不知道墨菲斯)。

我的数据库里会有100,000人,每个人都和一些人和他们喜欢的水果联系在一起。我想继续描述搜索,得到所有可能的比赛,如尼欧,墨菲斯和三一。希望这个描述更清楚。

EN

回答 1

Stack Overflow用户

发布于 2013-09-30 14:22:11

尝试并查看此查询是否满足您的要求。它检索三个人组成的组,每个人都喜欢一种具有给定名称的水果,他们通过一两种关系相互连接:知道。不确定它的规模会有多大。

代码语言:javascript
复制
Match p1:Person-[:LIKES]->f1:Fruit, p2:Person-[:LIKES]->f2:Fruit, p3:Person-[:LIKES]->f3:Fruit, path1=p1-[:KNOWS*1..2]-p2, path2=p2-[:KNOWS*1..2]-p3,path3=p1-[:KNOWS*1..2]-p3
Where f1.name = 'Apple' and f2.name='Peach' and f3.name = 'Banana' and all(n in nodes(path1) where n in [p1,p2,p3]) and all(n in nodes(path2) where n in [p1,p2,p3]) and all(n in nodes(path3) where n in [p1,p2,p3])
Return p1.name, p2.name, p3.name

注意:我在每个水果节点添加了一个标签“:果树”,给每个人节点添加了一个标签": person“。

这是图表和查询的控制台,

http://console.neo4j.org/?id=fswj2b

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18917450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档