1

「関連用語」の関係が重複しているシソーラスをインポートしたため、A と B が関連している場合、グラフには (B)-[:RT]->(A) だけでなく (A)-[:RT]->(B) も含まれます。 )

これをクリーンアップするために、Neo4j ではグラフを両方向にトラバースできるため、

match (t0)-[r0:RT]->(t1)-[r1:RT]->(t2)
where t0=t2 AND id(r0) > id(r1)
delete r0

これが最速の方法ですか?回答 : いいえ、簡略化できるためです。

に編集

match (t0)-[r0:RT]->(t1)-[r1:RT]->(t0)
where id(r0)>id(r1)
delete r0
4

4 に答える 4

1

私は次のようなものを使用します:

match (s:Node)-[r]-(n:Node) 
with s,n,type(r) as t, tail(collect(r)) as coll 
foreach(x in coll | delete x)

エッジの方向に関係なく、重複した相互関係を削除します。ただし、方向を指定する場合は、次を試すこともできます。

match (s:Node)-[r]->(n:Node) 
with s,n,type(r) as t, tail(collect(r)) as coll 
foreach(x in coll | delete x)

またはその逆。お役に立てれば。

于 2016-01-11T10:13:29.957 に答える
0

where句は必要ないと思います。

match (t0)-[r0:RT]->(t1)-[r1:RT]->(t0)
delete r0
于 2014-02-26T05:35:55.333 に答える