我正在使用以下代码生成唯一关系
public Relationship createRelationshipTypeWithUniqueFactory(Index<Relationship> index,
String indexableKey, final String indexableValue,
final RelationshipType type, final Node start, final Node end) {
UniqueFactory<Relationship> factory = new UniqueFactory.UniqueRelationshipFactory(index) {
@Override
protected Relationship create(Map<String, Object> properties) {
Relationship r = start.createRelationshipTo(end, type);
return r;
}
};
return factory.getOrCreate(indexableKey, indexableValue);
}
工厂要求我传递一个键和值(对于索引),以便它可以强制执行关系的唯一性。 但是,我不确定如何建立密钥+值。
让我们假设以下内容:
A - [know] - &gt; B(A知道B)其中A和B由财产电子邮件地址
标识我希望这个关系船是唯一的,这样A与这种类型的B最多有1个已知关系。 此外,这应该可以防止B与A建立额外的关系(因为KNOWS关系是双向的)。
最佳选择价值是什么?其中一个电子邮件地址(例如词汇排序中最重要的两个)?
任何人都可以对此有所了解吗?
干杯,
埃里克
答案 0 :(得分:0)
您可以使用Cyphers CREATE UNIQUE
功能,只有在不存在的情况下才会创建关系,不会考虑第二次运行的方向,请参阅http://console.neo4j.org/r/a4kc2k
START n=node:node_auto_index(name='Neo'), t= node:node_auto_index(name='The Architect')
CREATE UNIQUE n-[r:SPEAKES_WITH]-t
RETURN n AS Neo,r