如何利用限制于顶点标签的复合索引?

时间:2014-10-16 21:26:09

标签: gremlin titan

假设我已经定义了一个复合索引和顶点标签,如下所示:

mgmt = g.getManagementSystem()
name = mgmt.makePropertyKey('name').dataType(String.class).make()
god = mgmt.getVertexLabel('god')
mgmt.buildIndex('byName',Vertex.class).addKey(name).indexOnly(god).buildCompositeIndex()
mgmt.commit()

如何在Gremlin中利用此索引?

假设它类似于g.V('label','god').has('name','zeus'),哪个性能更高?

  1. g.V('label','god').has('name','zeus')
  2. g.V('name','zeus').has('label','god')
  3. 传统上我们会选择(2)因为名称标签更具选择性,但顶点标签是否有一些特殊之处会使这种情况不真实?

2 个答案:

答案 0 :(得分:3)

好的,您已经发现,它目前在Gremlin中是不可能的,并且只能通过查询API获得。关于表现:你的两种方法不会有所作为;在引擎盖下,两个查询都会生成相同的Cassandra / HBase查询(或者您正在使用的任何存储后端)。

干杯, 丹尼尔

答案 1 :(得分:1)

它在TP2中不起作用,但可以与TP3一起使用(Titan 0.9 /下一版本)。目前你可以这样做:

g.query().has('label','god').has('name','zeus').vertices()

还不知道性能配置文件。

https://github.com/thinkaurelius/titan/issues/755