【问题标题】:Cypher query to retrieve nodes order by relationship count密码查询以按关系计数检索节点顺序
【发布时间】:2018-11-15 20:16:18
【问题描述】:

在使用 neo4j 时,我在一个用例中遇到了一个问题,我需要使用密码顺序从输入节点集的关系数中获取数据。

我对neo4j很陌生,如果问题太幼稚,我很遗憾。

演示图:

我想要做的是,对于输入字符串说“java开发工程师”返回所有节点,连接到节点java,开发人员和工程师,但给连接到所有三个节点的节点最高优先级,然后低优先级给节点连接到 2 个,最低连接到仅与其中 1 个连接的节点。

我已经写了一个基本查询:

match(n:Token{name:"java"})-[res]->(y)
match(n1:Token{name:"developer"})-[res1]->(y1)
match(x:Token{name:"engineer"})-[res2]->(y2)
return n,n1,x,res,res1,res2,y,y1,y2

我面临的问题是优先考虑与所有 3 个输入节点连接的节点,如果存在任何不正确的输入令牌(例如 java、开发人员、工程师和 tesla,其中 tesla 不是令牌),则处理情况。

谢谢

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    以下查询假定它传递了一个包含输入字符串的inputparameter,并为每个不同的term返回:

    • 术语本身
    • 从相关Token 节点到该术语的路径集合,
    • 为该词找到的路径数

    结果也按找到的路径数降序返回。

    UNWIND SPLIT($input, ' ') AS name
    MATCH p=(n:Token {name: name})-[:RELATED_TO]->(term)
    WITH term, COLLECT(p) AS paths
    ORDER BY SIZE(paths) DESC
    RETURN term, paths, SIZE(paths) AS count
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多