gpt4 book ai didi

java - Gremlin Java : Get Vertices by max Edge count

转载 作者:行者123 更新时间:2023-11-29 04:32:48 27 4
gpt4 key购买 nike

假设我们有这样一个图表。

(User)-[:KNOWS]->(Friend)

我想计算来自用户的所有传出关系并按用户对它们进行分组,然后添加一些条件进行过滤。 (喜欢超过10个知道)这是我做的,

g.V().hasLabel("Friend").in("KNOWS").hasLabel("User").groupCount().next()

这是返回 map ,所以我可以添加条件来过滤结果。我的问题是,我们是否有任何有效的替代方法来做到这一点?

最佳答案

我不确定我是否正确理解了你的问题,但听起来你只是想根据标签 knows 的传出边数来过滤所有用户。在这种情况下,您可以直接从 User 顶点开始,并根据它们的 KNOWS 边数过滤它们,而不是执行 groupCount:

g.V().hasLabel('User').where(outE('KNOWS').count().is(gt(10)))

到目前为止,我忽略了任何性能限制。但正如 Paul Jackson 在他的评论中提到的那样,在这样的 OLTP 模式下执行这样的查询效率不高。 Neo4j 可能会遍历所有顶点,检查它们是否具有标签 User,然后计算它们的 KNOWS 边数。

基本上,您有两个选项可以加快速度:

  1. 正如 Paul Jackson 所建议的:将边数作为一个属性添加到顶点,预先计算它然后索引该属性
  2. 使用像 Spark-Gremlin 这样的东西如果您真的想即时计算边数。

关于java - Gremlin Java : Get Vertices by max Edge count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43113501/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com