0

我正在使用以下代码生成唯一关系

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 - [知道] -> B(A 知道 B)其中 A 和 B 由物业电子邮件地址标识

我希望这种关系是唯一的,以便 A 与这种类型的 B 最多有 1 个 KNOWN 关系。此外,这应该防止 B 创建与 A 的附加关系(因为 KNOWS 关系是双向的)。

选择什么最有价值?电子邮件地址之一(例如两个中最重要的词汇排序)?

任何人都可以对此有所了解吗?

干杯,

埃里克

4

1 回答 1

0

您可以使用 CyphersCREATE 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
于 2013-07-25T13:13:27.667 回答