我正在使用neo4j浏览器按标签搜索图表中的节点。我知道节点存在且节点上的标签是正确的,但是当我在节点上指定标签时,neo4j找不到它。
更具体地说,我在neo4j浏览器中使用以下cypher查询:
match (a:Foo) where a.value = "Bar" return a
(no changes, no records)
但是,具有该值的节点确实存在该标签:
match (a) where a.value = "Bar" return labels(a)
["Foo"]
该标签上有一个索引,但我不知道这是否相关。
:schema
Indexes
ON :Foo(value) ONLINE
此外,显式重置标签似乎不起作用:
match (a) where a.value = "Bar"
set a :Foo
return a
将返回应用了正确标签的节点,但是当我重试原始查询时,它仍然无法找到该节点。
这在以前有用,但我最近对我们的堆大小/页面缓存大小/ gc类型进行了一些更改,试图在垃圾收集上运行100%cpu挂起的另一个问题。这些更改都不应影响标签。
以前有没有人有这种经历?
我正在使用Neo4j CE v3.3.0
答案 0 :(得分:1)
看起来像我的评论中提到的索引损坏问题,然后再次创建索引应该修复它。
关于索引是如何被破坏的,我不能说,但你使用的是.0版本,而且那些错误比其他版本更多。您可能希望升级到最新的3.3.x版本。
您可以随时通过neo4j-admin运行一致性检查,看看您的图表数据是否还有其他问题。
答案 1 :(得分:0)
这不起作用
MATCH ( p:item {name:"spam"}) RETURN p.name
(无更改,无记录)
但这确实有效:
Match (n:item) Where n.name =~ '.*spam.*' Return n.name, n.purchase
n.name n.purchase
"""spam""" 8