【发布时间】:2018-02-19 17:13:57
【问题描述】:
在 Neo4J 2.x 中,我使用了关系的自动索引,然后我可以根据已索引的关系属性进行搜索。
在 Neo4J 3.x 中这不起作用。
在 Neo4J 2.x 中,我设置为 neo4j properties:
relationship_auto_indexing=true
并设置要使用索引的关系的几个属性
relationship_keys_indexable=user,context,statement,gapscan
然后我将使用旧的 1.x Cypher 查询首先识别TO 类型的用户建立的所有关系,读取他们的上下文属性,然后将其与具有特定上下文属性的节点匹配,然后匹配该用户创建的上下文中的节点并检索它们。查询看起来像
START rel=relationship:relationship_auto_index(user='userid') WHERE TYPE(rel)='TO' WITH DISTINCT rel MATCH (ctx:Context) WHERE rel.context = ctx.uid AND (ctx.name="neo4j3" ) RETURN DISTINCT STARTNODE(rel).uid AS source_id, STARTNODE(rel).name AS source_name, ENDNODE(rel).uid AS target_id, ENDNODE(rel).name AS target_name, rel.uid AS edge_id, ctx.name AS context_name, rel.statement AS statement_id, rel.weight AS weight;
在 Neo4J 3.x 中,此查询不起作用,我相信索引的完成方式不同。
我有两个问题:
1) 我必须手动索引关系还是在 3.x 中自动完成?
2) 我会使用什么查询来代替 START rel=.... - 任何替代使用关系属性进行搜索的方法?
【问题讨论】: