在使用neo4j时,我在一个用例中遇到了一个问题,在这个用例中,我需要使用cypher order by number从输入节点集获取数据。
我是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、开发人员、工程师和tesla,其中tesla不是令牌),则处理情况。
谢谢
发布于 2018-06-07 04:07:47
下面的查询假定向它传递了一个包含输入字符串的input
parameter,并为每个不同的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
https://stackoverflow.com/questions/50715406
复制相似问题