【发布时间】:2018-08-25 23:41:22
【问题描述】:
我正在使用 neo4j 浏览器按标签在图表中搜索节点。我知道节点存在并且节点上的标签是正确的,但是当我在节点上指定标签时,neo4j 找不到它。
更具体地说,我在 neo4j 浏览器中使用以下密码查询:
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
【问题讨论】:
-
在
SET之前做REMOVE a:Foo有帮助吗?如果不是,并且这只是单个节点的问题,您可以尝试用新节点替换该节点(并重新创建其所有关系)。 -
@cybersam 添加
REMOVE仍然“有效”,因为它没有抛出错误或任何东西,但我仍然无法按标签找到该节点。 -
删除索引然后重新创建它可能是值得的。我感觉你的索引已经损坏了
-
@InverseFalcon,我删除并重新创建了它,这似乎解决了问题。知道是什么原因造成的吗?还是一种检测方法?