假设我有两个节点,其中一个边缘为:
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)
答案 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())