【问题标题】:Can I count the precedence relation if all the paths on the same set of nodes如果同一组节点上的所有路径都可以计算优先关系吗
【发布时间】:2015-06-04 15:02:45
【问题描述】:

路径代表用户的浏览历史。

我正在考虑我应该采用哪种设计结构。

例如,

红色路径表示用户浏览过

[页面 A]-> [页面 B]-> [页面 B]-> [页面 C]- > [页面 B]-> [页面 A]

蓝色路径表示用户浏览过

[页面 C]-> [页面 D]-> [页面 A]

如果我要选择谁的浏览路径是page C早于page A

答案应该是蓝色路径

如何在 cypher query 中设计查询,

哪种设计适合我的情况?

谢谢。

设计1(每条路径共享相同的节点)

设计 2(每条路径都应该有自己的节点。)

更新

我尝试在我的模型中应用您的查询,

我想知道 node 5231 是否早于 node 7222

但它无法得到任何输出。

MATCH p=(x)-[*0..]->(y {code: '5231'})
WHERE NOT ()-->(x)
RETURN p
ORDER BY LENGTH(p)
LIMIT 1;

数据

model data download

【问题讨论】:

    标签: neo4j cypher py2neo


    【解决方案1】:

    为每条路径创建不相交的子图是一种浪费,并且可能不会更容易解决您的用例。

    这是一个查询(适用于统一图),它查找C 最早出现的路径(或其中一个,如果有平局)。

    MATCH p=(x)-[*0..]->(y {id: 'C'})
    WHERE NOT ()-->(x)
    RETURN p
    ORDER BY LENGTH(p)
    LIMIT 1;
    

    这个特定的查询结束它在C 节点找到的路径,并且不费心包含任何后续节点(可能有很多分支,并且不清楚您要遵循哪个分支)。

    【讨论】:

    • 我尝试了您的查询,但我无法获得任何输出 T_T 请查看我的更新
    • 你能把你的测试数据放在console 里分享一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多