【问题标题】:Spring Data Neo4j does not recognize externally inserted nodesSpring Data Neo4j 无法识别外部插入的节点
【发布时间】:2013-08-19 17:11:51
【问题描述】:

我正在使用一个小的 Clojure 脚本,它将节点批量插入到我的 Neo4j 实例中。 为了显示这些节点,我使用了基于 Spring 的 Web 应用和 Spring Data Neo4j。 我还创建了一个代表节点的小型域对象。

当我使用 webapp 插入节点时,它会立即加载并显示出来。但是当我尝试加载外部脚本插入的节点时,找不到它。为了兼容,我认为在域类的 FQN 中添加 _type_ 属性就足够了。但在我看来,还有更多工作要做。

我正在使用 Neo4j 1.8.2 服务器和 SDN 2.2.2

你能给我一个提示吗?

提前致谢。

最好, 马库斯

【问题讨论】:

  • Neo4j 是否提供某种缓存?因为看起来从第三方应用程序插入的节点不在 Web 应用程序缓存中,这就是它看不到它们的原因。如果是这种情况,您需要一个入口点或一种使缓存无效的方法。
  • 不幸的是,我不认为这会有所帮助。如果我错了,任何人都可以纠正我。我有一个松散的猜测,它可能与索引有关,这在 SDN 下将不可用。但老实说,我现在还没有真正的线索。

标签: neo4j spring-data-neo4j


【解决方案1】:

Spring Data Neo4j (SDN) 使用TypeRepresentationStrategy。如果未明确配置 SDN,则默认使用 IndexingNodeTypeRepresentationStrategyIndexingRelationshipTypeRepresentationStrategy。这些策略为其所有节点实体保留一个名为“__types__”的索引,为其所有关系实体保留一个名为“__rel_types__”的索引。 SDN创建的所有节点或关系实体都将被添加到相应的索引中。

如果您使用 SDN 的存储库基础架构并调用 yourEntityRepo.findAll(),将查询“__types__”(或“__rel_types__”)索引以获取此特定类型的所有实体。

您的脚本可能不会更新这些索引。看看reindexing solution described on the neo4j google group

【讨论】:

  • 很好的答案,@James!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
  • 2015-11-07
  • 1970-01-01
  • 2021-06-20
相关资源
最近更新 更多