我想基于多个路径在Neo4j(localhost EDITION on localhost)上显示子图。路径是具有特殊traversalDescription()
的自定义evaluate(Path path)
的结果。目的是忽略特殊的关系和节点序列(details to sequence)。据我所知,它在密码查询中是不可能的。
结果如下:
(268911)
(268911)<--[REL1,151]--(276650)
(268911)<--[REL1,151]--(276650)<--[REL2,715]--(276651)
(268911)<--[REL1,151]--(276650)<--[REL2,715]--(276651)<--[REL1,34]--(259461)
(268911)<--[REL1,151]--(276650)<--[REL2,715]--(276651)<--[REL1,34]--(259461)<--[REL2,749]--(259466)
(268911)<--[REL1,151]--(276650)<--[REL2,715]--(276651)<--[REL1,34]--(259461)<--[REL2,749]--(259466)<--[REL1,230]--(281)
(268911)<--[REL1,151]--(276650)<--[REL2,715]--(276651)<--[REL1,34]--(259461)<--[REL2,749]--(259466)<--[REL1,230]--(281)--[REL2,2923]-->(278)
(268911)<--[REL1,151]--(276650)<--[REL2,715]--(276651)<--[REL1,34]--(259461)<--[REL2,749]--(259466)<--[REL1,230]--(281)--[REL2,2923]-->(278)<--[REL2,1034]--(9)
(268911)<--[REL1,151]--(276650)<--[REL2,715]--(276651)<--[REL1,34]--(259461)<--[REL2,749]--(259466)<--[REL1,230]--(281)--[REL2,2923]-->(278)<--[REL2,1034]--(9)--[REL2,2943]-->(6)
(268911)<--[REL1,151]--(276650)<--[REL2,715]--(276651)<--[REL1,34]--(259461)<--[REL2,749]--(259466)<--[REL1,230]--(281)--[REL2,2923]-->(278)<--[REL2,1034]--(9)--[REL2,1040]-->(396685)
(268911)<--[REL1,151]--(276650)<--[REL2,715]--(276651)<--[REL1,34]--(259461)<--[REL2,749]--(259466)<--[REL1,230]--(281)--[REL2,2923]-->(278)<--[REL2,1034]--(9)--[REL2,1040]-->(396685)<--[REL2,3047]--(396687)
(268911)<--[REL1,151]--(276650)<--[REL2,715]--(276651)<--[REL1,34]--(259461)<--[REL2,559]--(259465)
(268911)<--[REL1,151]--(276650)<--[REL2,715]--(276651)<--[REL1,34]--(259461)<--[REL2,559]--(259465)<--[REL1,294]--(257)
(268911)<--[REL1,151]--(276650)<--[REL2,715]--(276651)<--[REL1,34]--(259461)<--[REL2,559]--(259465)<--[REL1,294]--(257)--[REL2,2959]-->(255)
(268911)<--[REL1,151]--(276650)<--[REL2,715]--(276651)<--[REL1,34]--(259461)<--[REL2,559]--(259465)<--[REL1,294]--(257)--[REL2,2959]-->(255)<--[REL2,379]--(142)
(268911)<--[REL1,151]--(276650)<--[REL2,715]--(276651)<--[REL1,34]--(259461)<--[REL2,559]--(259465)<--[REL1,294]--(257)--[REL2,2959]-->(255)<--[REL2,379]--(142)--[REL2,2892]-->(139)
(268911)<--[REL1,151]--(276650)<--[REL2,715]--(276651)<--[REL1,34]--(259461)<--[REL2,559]--(259465)<--[REL1,294]--(257)--[REL2,2959]-->(255)<--[REL2,379]--(142)--[REL2,626]-->(396840)
(268911)<--[REL1,151]--(276650)<--[REL2,715]--(276651)<--[REL1,34]--(259461)<--[REL2,559]--(259465)<--[REL1,294]--(257)--[REL2,2959]-->(255)<--[REL2,379]--(142)--[REL2,626]-->(396840)<--[REL2,2988]--(396843)
(268911)<--[REL1,151]--(276650)<--[REL2,711]--(276653)
(268911)<--[REL1,151]--(276650)<--[REL2,711]--(276653)<--[REL1,74]--(259462)
(268911)<--[REL1,151]--(276650)<--[REL2,711]--(276653)<--[REL1,74]--(259462)<--[REL2,777]--(259469)
(268911)<--[REL1,151]--(276650)<--[REL2,711]--(276653)<--[REL1,74]--(259462)<--[REL2,777]--(259469)<--[REL1,12]--(283)
(268911)<--[REL1,151]--(276650)<--[REL2,711]--(276653)<--[REL1,74]--(259462)<--[REL2,777]--(259469)<--[REL1,12]--(283)--[REL2,2922]-->(279)
(268911)<--[REL1,151]--(276650)<--[REL2,711]--(276653)<--[REL1,74]--(259462)<--[REL2,777]--(259469)<--[REL1,12]--(283)--[REL2,2922]-->(279)<--[REL2,1032]--(11)
(268911)<--[REL1,151]--(276650)<--[REL2,711]--(276653)<--[REL1,74]--(259462)<--[REL2,777]--(259469)<--[REL1,12]--(283)--[REL2,2922]-->(279)<--[REL2,1032]--(11)--[REL2,2942]-->(8)
(268911)<--[REL1,151]--(276650)<--[REL2,711]--(276653)<--[REL1,74]--(259462)<--[REL2,777]--(259469)<--[REL1,12]--(283)--[REL2,2922]-->(279)<--[REL2,1032]--(11)--[REL2,1039]-->(396683)
(268911)<--[REL1,151]--(276650)<--[REL2,711]--(276653)<--[REL1,74]--(259462)<--[REL2,777]--(259469)<--[REL1,12]--(283)--[REL2,2922]-->(279)<--[REL2,1032]--(11)--[REL2,1039]-->(396683)<--[REL2,3009]--(396684)
(268911)<--[REL1,151]--(276650)<--[REL2,711]--(276653)<--[REL1,74]--(259462)<--[REL2,558]--(259464)
(268911)<--[REL1,151]--(276650)<--[REL2,711]--(276653)<--[REL1,74]--(259462)<--[REL2,558]--(259464)<--[REL1,147]--(259)
(268911)<--[REL1,151]--(276650)<--[REL2,711]--(276653)<--[REL1,74]--(259462)<--[REL2,558]--(259464)<--[REL1,147]--(259)--[REL2,2958]-->(258)
(268911)<--[REL1,151]--(276650)<--[REL2,711]--(276653)<--[REL1,74]--(259462)<--[REL2,558]--(259464)<--[REL1,147]--(259)--[REL2,2958]-->(258)<--[REL2,378]--(143)
(268911)<--[REL1,151]--(276650)<--[REL2,711]--(276653)<--[REL1,74]--(259462)<--[REL2,558]--(259464)<--[REL1,147]--(259)--[REL2,2958]-->(258)<--[REL2,378]--(143)--[REL2,2891]-->(140)
(268911)<--[REL1,151]--(276650)<--[REL2,711]--(276653)<--[REL1,74]--(259462)<--[REL2,558]--(259464)<--[REL1,147]--(259)--[REL2,2958]-->(258)<--[REL2,378]--(143)--[REL2,625]-->(396864)
(268911)<--[REL1,151]--(276650)<--[REL2,711]--(276653)<--[REL1,74]--(259462)<--[REL2,558]--(259464)<--[REL1,147]--(259)--[REL2,2958]-->(258)<--[REL2,378]--(143)--[REL2,625]-->(396864)<--[REL2,3088]--(396867)
它基本上是一个从一个节点开始显示所有可能路径的子图(忽略序列)。但是如何在neo4j中显示这个?是否可以在neo4j中使用我的遍历器作为标准遍历器?我想避免选择每个节点并查询所有节点(可能是吨节点)。
这解决了问题(对于少量节点,将粘贴查询复制到webui中):
String query1=null,query2=null;
int ascii =65;
try ( Transaction tx = graphDb.beginTx() )
{
Traverser traverser = td.traverse(graphDb.getNodeById(id));
for ( Path path : traverser)
{
System.out.println(path.toString());
if(ascii == 65)
{
query1= "MATCH ("+Character.toString((char) ascii)+")";
query2= " WHERE id("+Character.toString((char) ascii)+")="+path.endNode().getId();
}
else
{
query1+= ",("+Character.toString((char) ascii)+")";
query2+= " AND id("+Character.toString((char) ascii)+")="+path.endNode().getId();
}
if(ascii==90)
ascii=96;
ascii++;
}
tx.success();
}
System.out.println(query1+query2+" RETURN *");
但还有其他解决方案吗?