2

我有一个边缘标签

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以使其工作。ONE2MANYMULTI

编辑:根据示例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 图(不那么严格)来利用以顶点为中心的索引。

在此处输入图像描述

任何帮助,将不胜感激!谢谢!

4

0 回答 0