求多度邀请关系中,邀请最多的人的邀请关系
发布于 5 年前 作者 superbaobei 1911 次浏览 来自 问答

已在google搜索,尚未搜索到答案。 节点关系描述:我想做的是邀请关系查询,每个节点只有一个mobile属性,每个节点只能被邀请一次,但是可以多次邀请别人。 eg: create (a:Person {mobile:‘13100000000’})-[r:invite]->(b:Person {mobile:‘13100000001’}) 想要查询的结果:希望查询出邀请关系中,邀请最多的人的邀请关系(可以多度邀请) 目前我的查询语句: 先通过*** match (a:Person)-[r:invite*]->(b:Person) return a.mobile,count(b) as sum order by sum desc limit 1 *** 查询出多度邀请关系中邀请人最多的节点的mobile,然后通过match p=(a:Person)-[r:invite*]->(b:Person) where a.mobile=‘13100000000’ return p获取他们之间的关系 请问有更好的优化方式吗?谢谢

4 回复

这个查询,数据量大了后会很慢~

求助啊!来人呀

目前看上去瓶颈是在最开始找到最多邀请人邀请关系这边,不限制路径长度的路径查询对查询性能的影响是非常大的,特别是你的图联通程度不错的情况下。 这个问题其实有点类似反过来的pagerank,只是节点本身的pr值不丢失。如果你对pagerank熟悉的话改改就完事儿了。 还有种方案是首先给每个节点写一个属性记录该节点一层的邀请节点数量invite_one,然后对于有邀请关系指向包含invite_one属性的节点,计算一遍invite_two,以此类推计算到你的邀请关系路径最大长度的迭代

@superbaobei 方案仅供参考。。。

回到顶部