私はエッジラベルを持っています
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
私のユースケースは理にかなっていると思います。それを機能させるために、エッジラベルの多重度をSIMPLE
からMANY2ONE
、ONE2MANY
またはに緩和したくありませんMULTI
。
編集: http://s3.thinkaurelius.com/docs/titan/1.0.0/indexes.htmlの例によると、ヘラクレスは多くのモンスターと戦ったため、「戦った」というラベルの付いたエッジは「ヘラクレス」から複数回出てきます。さまざまなモンスターと接続します。次に、エッジ インデックスは属性 'time' にあるため、フィルタリングを実行できます。私は似たようなことをしたいのですが、頂点中心のインデックスがその方法だと思いました..これらのエッジは、Hercules と各モンスターの間に「戦闘中」とラベル付けされたエッジが最大で 1 つあるため、Multiplicity.SIMPLE です。
編集2:
与えられた例に似た SIMPLE グラフ:
Hercules と、出て行く SIMPLE 'battled' エッジの頂点中心のインデックスを持つことは理にかなっていると思います。time >=20
これにより、Hercules からモンスターにトラバースするときのクエリがより高速になります。
頂点中心のインデックスを活用するために、以下のような MULTI グラフ (それほど厳密ではない) が必要な理由がわかりません。
どんな助けでも大歓迎です!ありがとう!