与唯一工厂关系的索引键/值。选择什么?

时间:2013-07-24 10:19:35

标签: neo4j

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

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关系是双向的)。

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

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

干杯,

埃里克

1 个答案:

答案 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