Neo4j 按关系计数检索节点顺序的密码查询

Neo4j 按关系计数检索节点顺序的密码查询,neo4j,cypher,Neo4j,Cypher,在使用neo4j时,我在一个用例中遇到了一个问题,我需要使用cypher order by number of relationship从输入的节点集中获取数据 我对neo4j非常陌生,如果这个问题太幼稚,我会感到遗憾 演示图: 我想做的是,对于一个输入字符串,比如“java developer engineer”,返回所有连接到java、developer和engineer节点的节点,但将最高优先级赋予连接到这三个节点的节点,然后将低优先级赋予连接到2个节点的节点,将最低优先级赋予仅连接到其

在使用neo4j时,我在一个用例中遇到了一个问题,我需要使用cypher order by number of relationship从输入的节点集中获取数据

我对neo4j非常陌生,如果这个问题太幼稚,我会感到遗憾

演示图:

我想做的是,对于一个输入字符串,比如“java developer engineer”,返回所有连接到java、developer和engineer节点的节点,但将最高优先级赋予连接到这三个节点的节点,然后将低优先级赋予连接到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、developer、engineer和tesla,其中tesla不是令牌),则处理该情况


谢谢

下面的查询假设它被传递了一个包含输入字符串的
输入
,并为每个不同的
术语
返回:

  • 术语本身
  • 从相关
    标记
    节点到该术语的路径集合
  • 为术语找到的路径数
结果也按找到的路径数降序返回

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