在使用旧索引时,如何在neo4j 2.1.2中检查标签?

时间:2014-06-23 06:51:50

标签: neo4j cypher

我刚从2.0.1升级到Neo4j 2.1.2,我的一些密码查询停止了工作。 我使用自定义的Lucene索引来查找startnodes,通过类型化关系(Partner_PartnerMeta)导航到类型化节点(PartnerTyp)。之后我只返回这些节点的子集。

我的查询以前用于检查startnode的类型(PartnerMeta)。从2.1.2开始查询

START partnermeta = node:PartnerTyp_Meta("Namen:wilhelm*") 
MATCH (partner:PartnerTyp)-[:Partner_PartnerMeta]->(partnermeta:PartnerMeta)
RETURN DISTINCT partner SKIP 0 LIMIT 10

结果

Cannot add labels or properties on a node which is already bound (line 2, column 52)
"MATCH (partner:PartnerTyp)-[:Partner_PartnerMeta]->(partnermeta:PartnerMeta)"
                                                    ^

可以通过省略查询的“:PartnerMeta”部分来抑制此错误。由于尚未检查从索引返回的节点的类型,我想验证它是“PartnerMeta”类型(也许我太偏执了)。

我的问题是: 在使用START结合传统索引后,是否有可能检查节点类型?

1 个答案:

答案 0 :(得分:0)

这是Cypher 2.1.2中的回归,将会修复。这是为了避免无效的标签检查组合。

目前,您可以尝试:

START partnermeta = node:PartnerTyp_Meta("Namen:wilhelm*") 
MATCH (partner:PartnerTyp)-[:Partner_PartnerMeta]->(partnermeta)
WHERE partnermeta:PartnerMeta
RETURN DISTINCT partner SKIP 0 LIMIT 10