gpt4 book ai didi

neo4j - 按路径成本的密码顺序

转载 作者:行者123 更新时间:2023-12-05 01:15:06 25 4
gpt4 key购买 nike

我对 cypher 和 neo4j 非常陌生。我想根据总路径成本获取 A 点和 B 点之间的所有路径并对其进行排序。在这种情况下,成本是一个整数关系属性。路径成本将是关系属性的总和。

我正在查看 cypher 的 ORDER BY 语句的一些示例,但是,通过这些示例,您似乎必须按已分配给被排序对象的属性进行排序,在这种情况下,这是行不通的,因为路径没有静态的“成本”属性。

(顺便说一句,这与路径的长度/数量不同)

我很确定像这样的事情对于 cypher 来说并不太复杂。

最佳答案

几天前,我尝试做与此非常相似的事情,但没有成功。问题在于您无法获得集合的总和,只能获得聚合的总和。

参见: https://groups.google.com/d/topic/neo4j/_MqwGp1a1Oo/discussion

我希望他们会在 Cypher 中为此添加一些功能,但我无法让它工作,即使有专家 -- Michael Hunger 的帮助。

更新 实际上,我今天查看了 Cypher 代码,以创建一个完全符合此目的的表达式。我不确定它是否会被 1.9 接受,但也许它的某种形式很快就会进入社区版。

更新 2 他们已将我的 reduce 拉取请求合并到 1.9-SNAPSHOT 中,我将更新下面的语法。

它基本上完全符合您的要求——我的数据的一个稍微陈旧的版本在这里: http://console.neo4j.org/r/2rvznu

这是 Cypher(注意,目前需要 1.9-SNAPSHOT):

   START n=node(18) 
MATCH p=n-[r*]->m
WHERE not(m-->())
WITH extract(x in r: x.score) as scores, length(p) as len
RETURN scores, reduce(res=0, x in scores: res + x) as totalscore, len
ORDER BY totalscore desc;

给出:

+------------------------------------------+
| scores | totalscore | len |
+------------------------------------------+
| [0.9,0.9,3.7] | 5.5 | 3 |
| [0.8,0.79] | 1.59 | 2 |
| [0.4,0.75] | 1.15 | 2 |
| [0.4,0.45] | 0.8500000000000001 | 2 |
+------------------------------------------+

关于neo4j - 按路径成本的密码顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12587263/

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