我有一个边缘标签
ContainsAttribute
其中有Multiplicity.SIMPLE
这些边也有一个属性,我们称之为x
我想在其上创建以顶点为中心的索引。
PropertyKey propertyX = mgmt.getPropertyKey("x");
EdgeLabel containsAttributeLabel = mgmt.makeEdgeLabel(EdgeLabels.ContainsAttribute).multiplicity(Multiplicity.SIMPLE).make();
mgmt.buildEdgeIndex(containsAttributeLabel,"propXIndex",Direction.IN, propertyX);
所以边代表Entity --containsAttribute --> Attribute
。我尝试进行的查询将尝试通过在 Property 上过滤来搜索给定查询的实体x
。
我想知道为什么它不允许我说:
The relation type [ContainsAttribute] has a multiplicity or cardinality constraint in direction [IN] and can therefore not be indexed
我认为我的用例是有道理的,我不想将我的边缘标签多重性从to 或SIMPLE
放宽MANY2ONE
以使其工作。ONE2MANY
MULTI
编辑:根据示例http://s3.thinkaurelius.com/docs/titan/1.0.0/indexes.html Hercules 与许多怪物作战,因此发现标记为“battled”的边缘多次从“Hercules”中出来连接不同的怪物。然后边缘索引在属性“时间”上,因此可以进行过滤。我想做类似的事情,我认为以顶点为中心的索引是一种方式。这些边缘是 Multiplicity.SIMPLE 因为在 Hercules 和每个怪物之间最多有一个边缘标记为“战斗”。
编辑2:
与给定的示例类似,又是一个简单的图:
我相信为 Hercules 和外向的 SIMPLE 'battled' 边缘设置一个以顶点为中心的索引是有意义的。time >=20
当从 Hercules 穿越到怪物时,这将使查询更快。
我不明白为什么我们必须有一个像下面这样的 MULTI 图(不那么严格)来利用以顶点为中心的索引。
任何帮助,将不胜感激!谢谢!