2

我正在尝试将我的 Neo4J 应用程序移植到 Titan,但遇到了一些与索引相关的问题。我知道 Titan 不支持顶点或边缘索引,只支持“关键”索引,对吗?

我也在使用灯泡模型,例如:

class Person(Node):
    element_type = 'person'
    facebook_id = String(indexed=True)

添加 Person(facebook_id='111') 以检索时应该可以使用:

gremlin> g.getVertices('facebook_id', '111')

它不起作用,并告诉我需要在使用之前创建键索引。所以我删除了键空间并在 rexster doghouse 中手动创建了索引:

gremlin> g.createKeyIndex("facebook_id", Vertex.class);

之后,用灯泡创建了 Person(facebook_id='111') 并尝试在 rexster doghouse 上检索:

gremlin> g.getVertices("facebook_id", "111")

并得到空洞的回应。使用 Titan 顶点 ID 获取时,它可以工作,但“facebook_id”为空并且“.map()”不起作用:

gremlin> g.v(4)
==>v[4]
gremlin> g.v(4).name
==>Renato Garcia Pedigoni
gremlin> g.v(4).facebook_id # nothing returned!
gremlin> g.v(4).map()
==>javax.script.ScriptException: java.lang.IllegalArgumentException: The value is already used by another vertex and the key is unique

附言

  • 这是我删除键空间后创建的第一个顶点
  • 是否可以自动创建键索引?

有小费吗?

谢谢!

雷纳托·佩迪戈尼

4

1 回答 1

2

是的,Titan 仅支持替换旧手动顶点索引的关键索引,其功能相似但开销较小。

异常表明该属性不仅是索引的,而且是唯一的(有关更多信息,请参阅Titan 类型)。

您是否尝试过在 Gremlin 中添加顶点和键索引(即没有灯泡)?此外,James 在 Bulbs 上做了很多与 Titan 集成相关的工作,因此这个特殊问题可能会在最新版本中得到解决。

于 2012-11-19T22:52:10.720 回答