Titan DB坏索引

时间:2015-07-13 06:47:06

标签: scala indexing playframework titan

我有这个titan db schema:

val mgmt = getManagementSystem

val guid = mgmt.makePropertyKey("guid").dataType(classOf[String]).make()
mgmt.buildIndex("byGuid",classOf[Vertex]).addKey(guid).unique().buildCompositeIndex()
mgmt.commit()

mgmt.makePropertyKey("foo").dataType(classOf[String]).make()
mgmt.makePropertyKey("fo2").dataType(classOf[String]).make()
mgmt.makePropertyKey("about").dataType(classOf[String]).make()

/**
foo foo foo
*//

mgmt.commit()

当我尝试这样做时:

db.V.has("guid", guid).next()

然后在Debug中就是这条消息:

[warn] c.t.t.g.t.StandardTitanTx - Query requires iterating over all vertices [()]. For better performance, use indexes

我使用了泰坦文档,所有内容都像文档一样设置。我不知道出了什么问题,请帮忙。 THX。

1 个答案:

答案 0 :(得分:0)

您必须等待复合索引从INSTALLED切换到ENABLED状态。

要执行此操作,请将代码更改为

// Create an index
m = graph.openManagement()
m.buildIndex('names', Vertex.class).addKey(m.getPropertyKey('name')).buildCompositeIndex()
m.commit()
graph.tx().commit()

// Block until the SchemaStatus transitions from INSTALLED to REGISTERED
ManagementSystem.awaitGraphIndexStatus(graph, 'names').status(SchemaStatus.REGISTERED).call()

// Reindex using TitanManagement
m = graph.openManagement()
i = m.getGraphIndex('names')
m.updateIndex(i, SchemaAction.REINDEX)
m.commit()

// Enable the index
ManagementSystem.awaitGraphIndexStatus(graph, 'names').status(SchemaStatus.ENABLED).call()

有关详细信息,请查看here