首页 > 解决方案 > 忽略 Cypher 查询或替代方案中的属性:如何计算关系序列

问题描述

以下 Cypher 语句为我提供了代码下方的图形输出(见图)。以及图像下方的文本输出。我的问题是文本输出。

我将尝试清楚地解释这个问题:我对两个节点的相同序列感兴趣,关于一个特定的属性(这里:personName)。例如,正如您在图片中看到的(或从 create 语句中看到的),Bob 在 May 之后出现了两次。我想通过 apoc.coll.frequencies(pairsOfActs) AS giveBackFrequencyOfPairs RETURN giveBackFrequencyOfPairs 来捕捉这个。但是,“时间”属性阻碍了。有没有办法忽略时间属性?我一直在尝试对列表进行操作以及删除时间属性(然后我的序列消失了),但没有任何效果。有什么建议么?或者这种方法完全错误,或者甚至有一个预定义的函数来计算我缺少的特定节点序列?

CREATE
    (a: Action {personName: 'Tom', time: 1}), 
    (b: Action {personName: 'May', time: 2}),  
    (c: Action {personName: 'Bob', time: 3}),
    (d: Action {personName: 'Alex', time: 4}), 
    (e: Action {personName: 'Zac', time: 5}),
    (f: Action {personName: 'Jill', time: 6}),
    (g: Action {personName: 'May', time: 7}),  
    (h: Action {personName: 'Bob', time: 8})


MATCH (act: Action) 
WITH act  ORDER BY act.time ASC 
WITH COLLECT(act) AS acts 
FOREACH (n IN RANGE(0, size(acts)-2) |
FOREACH (curr IN [acts[n]] | 
FOREACH (next IN [acts[n+1]] | 
MERGE (curr)-[:NEXT]-> (next)))) 
WITH apoc.coll.pairsMin(acts) as pairsOfActs
UNWIND pairsOfActs as unwoundPairsOfActs
WITH apoc.coll.frequencies(unwoundPairsOfActs) AS    giveBackFrequencyOfPairs
RETURN giveBackFrequencyOfPairs

在此处输入图像描述 在此处输入图像描述

标签: neo4jcyphersequencefrequencyneo4j-apoc

解决方案


对于您陈述的问题,无需创建NEXT关系,因此此答案无需费心创建它们。如果出于某种原因确实需要,您可以修改此答案以将其重新添加。

此查询应返回每对名称(出现在您的time序列中)的频率:

MATCH (act: Action) 
WITH act ORDER BY act.time ASC 
RETURN apoc.coll.frequencies(apoc.coll.pairsMin(COLLECT(act.personName))) AS giveBackFrequencyOfPairs

带有您的样本数据的输出将是:

╒══════════════════════════════════════════════════════════════════════╕
│"giveBackFrequencyOfPairs"                                            │
╞══════════════════════════════════════════════════════════════════════╡
│[{"count":1,"item":["Tom","May"]},{"count":2,"item":["May","Bob"]},{"c│
│ount":1,"item":["Bob","Alex"]},{"count":1,"item":["Alex","Zac"]},{"cou│
│nt":1,"item":["Zac","Jill"]},{"count":1,"item":["Jill","May"]}]       │
└──────────────────────────────────────────────────────────────────────┘

推荐阅读