在 Neo4j 中搜索从所有节点到所有节点的匹配项

Searching for matches from all nodes to all nodes in Neo4j

我有一组节点代表文件系统位置之间的 links。我可以加载所有节点,并尝试通过在每个节点中查找目标目录和源目录之间的匹配项来 link 将它们放在一起。

伪代码查询:

For all Interface nodes in Neo4j, 
search all other nodes for where other.sourcedir = this.destdir.  
If a match is found, create a SENDS_TO relationship from A to B.

天真的查询: MATCH (a:Interface), (b:Interface) WHERE a.destdir == b.sourcedir 合并 (a)-[r:SENDS_TO]->(b)

当我 运行 该查询时,Neo4j 似乎进入了一个无限循环,我在 10 分钟后终止了该循环。

您可以试试这个:

MATCH (a:Interface)
with a
MATCH (b:Interface)
WHERE a.destdir == b.sourcedir and a <> b
MERGE (a)-[:SENDS_TO->(b);

这可能会执行得更好,但是您 运行 的查询会将每个接口与其他每个接口进行比较。所以对我来说似乎是 O(n^2),如果你有 80 个 frazillion 节点,它会很慢。在 运行 之前,您可能需要确保 destdirsourcedir.

上存在索引