我为属性创建了一个边索引(out:Link,in:Link,type:String)
我想通过以下方式查询索引而不指定type
属性:
Iterable<Edge> edges = noTrx.getEdges("e." + label, new OCompositeKey(vertexA.getId(), vertexB.getId()));
不幸的是,如果我省略了OCompositeKey中的类型,就找不到任何元素。
有没有办法查询索引并省略type
?或者我是否需要创建一个仅包含out和in?
完整示例来源:
答案 0 :(得分:1)
您使用哈希索引,因此提供的方法是正确的。但是,如果您将使用基于树的索引并使用嵌入式数据库,则可以使用没有类型的复合键,但有点棘手。你应该调用
而不是调用getEdges函数 index.iterateEntriesMajor(new OCompositeKey(root.getId(), foundElement.getId()))
然后对结果调用中的每条记录graph.getEdge(record)
我注意到你使用noTX图形实现,我不建议在生产中使用noTx实现,这可能会导致数据不一致和图形状态破坏。
答案 1 :(得分:0)
你的班级HAS_ITEM有两个索引
如果您还要查看类型,则必须使用索引e.has_item_type
Iterable<Edge> edges = noTrx.getEdges("e." + label +"_type", new OCompositeKey(root.getId(), foundElement.getId(),type));
否则你可以使用索引e.has_item
Iterable<Edge> edges = noTrx.getEdges("e." + label, new OCompositeKey(root.getId(), foundElement.getId()));
希望它有所帮助。