首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >neo4j笛卡尔产品性能改进

neo4j笛卡尔产品性能改进
EN

Stack Overflow用户
提问于 2014-11-05 14:01:07
回答 2查看 446关注 0票数 0

我有一个图形数据库,有200多万个节点。我有一个应用程序,它使用一个社交图,并对它做一些推断。作为算法的一步,我必须得到一个关系的所有可能的组合:两个连接节点的朋友。目前,我有一个类似于: match (a)-:friend-(c),(b)-:friend-(d)的查询,其中id(a)={ida}和id(b)={idb}返回不同的c作为第一,d作为第二。

因此,我已经知道了节点ab,并且我想从ab的朋友那里得到所有可能的配对。这显然是一项非常缓慢的行动。我想知道在neo4j中是否有更有效的方法来获得同样的结果。添加索引也许会有帮助吗?欢迎任何想法或线索!

示例 Node a有朋友:xy Node b有朋友:ghi`` Then the result should be: x,g ,h,id16g,h>d18i`

EN

回答 2

Stack Overflow用户

发布于 2014-11-05 16:03:35

如果尚未使用标签,则应使用标签来加快查询速度,这可能如下所示:

代码语言:javascript
运行
复制
MATCH (p1:Person)-[:FRIEND]->(p3:Person),(p2:Person)-[:FRIEND]->(p4:Person)
WHERE ID(p1) = 6 AND ID(p2) = 7
RETURN p3 as first, p4 as second

显然,这将取决于您已经使用:Person标签创建了节点。

平均节点有多少个朋友?

票数 1
EN

Stack Overflow用户

发布于 2014-11-16 09:54:30

我不会使用两种模式,而只使用一种和IN操作符。

代码语言:javascript
运行
复制
MATCH (p:Person)-[:FRIEND]->(friend:Person) 
WHERE id(p) IN [1,2,3]
RETURN p, collect(friend) as friends

然后,你没有交叉产品,你也可以很好地返回朋友作为收集每人。

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

https://stackoverflow.com/questions/26759077

复制
相关文章

相似问题

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