如何在边缘属性上创建查找索引?

时间:2013-10-16 09:12:25

标签: neo4j gremlin

假设我有两个节点,其中一个边缘为:

 country ---> has ---> school

其中,edge“has”具有名为“ since ”的属性。

如果我为节点和边缘+边缘属性创建了查找索引。

g.createKeyIndex('country', Vertex.class)
g.createKeyIndex('school', Vertex.class)
g.createKeyIndex('has', Edge.class)

如何在边缘属性(自)上创建索引。或者在边缘“has”中创建索引时。属性被索引。是吗?

Neo4j.property

我设置为:

# Autoindexing

# Enable auto-indexing for nodes, default is false
node_auto_indexing=true

# The node property keys to be auto-indexed, if enabled
node_keys_indexable=country, school

# Enable auto-indexing for relationships, default is false
relationship_auto_indexing=true

# The relationship property keys to be auto-indexed, if enabled
relationship_keys_indexable=since

但我不希望通过此属性文件创建自动索引,但在添加顶点/边之前需要以gremlin方式。

就像泰坦那样:

g.makeType().name('since').dataType(Date.class).unique(OUT).makePropertyKey()

怎么可能通过简单的neo4j + gremlin?

我正在关注:

http://www.tinkerpop.com/docs/javadocs/blueprints/2.1.0/com/tinkerpop/blueprints/KeyIndexableGraph.html#createKeyIndex(java.lang.String,java.lang.Class)

1 个答案:

答案 0 :(得分:1)

你有点混淆索引的概念。以这种方式在createKeyIndex上使用Graph

g.createKeyIndex('has', Edge.class)

不创建名为“has”的“索引”边缘标签。它正在一个名为“has”的属性上创建一个索引,该属性将查找Edge。如果你想要一个“自”的索引,那么只需:

g.createKeyIndex('since', Edge.class)

也就是说,我所知道的Neo4j中存在的东西类似于Titan中的顶点中心索引,所以不是因为你在“since”上创建一个关键索引会让Gremlin利用那个索引在一个简单的键索引查找之外的遍历中,如:

g.E('since', new Date())