如何在关系类型上创建索引(neo4j)

时间:2015-03-08 01:56:14

标签: sql neo4j

我对neo4j很新。我在Windows下运行shell。 我创建了一个名为:user的节点,我有id的索引。用户有id和name属性。

我创建了一个名为friends的关系。 (user1,user2)

neo4j.properties设置为:

# 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=id

# 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=user1,user2

我的问题是:

1-当我输入:: schema ls时,它显示:

Indexes
  ON :User(id) ONLINE  

No constraints

为什么不显示关系的索引?

2-如何使用shell手动创建关系的索引?

1 个答案:

答案 0 :(得分:2)

当您键入:schema时,您看到的索引是Neo4j中的新式索引。好像node_auto_indexingrelationship_auto_indexing(以及*_keys_indexable)配置属性似乎是Neo4j遗留索引的一部分:

http://neo4j.com/docs/milestone/auto-indexing.html

我对遗留索引不太熟悉,但在新式索引中没有对关系建立索引。在该范例中,您首先通过索引找到节点并遵循那里的关系,但是没有首先找到节点就没有直接查询关系。

您可以在此处阅读有关旧版索引的内容:

http://neo4j.com/docs/milestone/indexing.html

但我会复制/粘贴一段有用的文章:

"从Neo4j 2.0开始,这不是在Neo4j中索引数据的首选方法,而是建议在数据库模式中定义索引。"

"但是,对遗留索引的支持仍然存在,因为某些功能(例如唯一性约束)尚未由新索引处理。"

我不认为这完全正确,但是,因为Neo4j在数据库模式中支持了一段时间内的唯一约束:

http://neo4j.com/docs/stable/query-constraints.html