【问题标题】:Deleting indexed nodes in Neo4j在 Neo4j 中删除索引节点
【发布时间】:2012-11-27 15:02:24
【问题描述】:

在 Neo4j 中,如果我删除一个索引节点,我必须先从索引中删除该节点还是会自动更新索引?

这是一个小的(未经测试的)示例:

val index = graphDb.index()
val someIdx = index.forNodes("someIdx")
val someNode = graphDb.createNode()
someIdx.add(someNode, "key", "value")

然后:

//remove from someIdx???
someNode.delete()

【问题讨论】:

    标签: scala indexing neo4j


    【解决方案1】:

    删除节点时,必须先删除索引。如果您想从索引中删除所有提及的节点,请参见下文:

        IndexManager indexManager = db.index();
        Index<Node> index = indexManager.forNodes("indexName");
        index.remove(node);
    

    【讨论】:

    • 当您尝试通过索引查询获取已删除节点时会发生什么?
    • 你得到一个例外,我不能准确引用,但它是关于你试图访问一个不再存在的节点。
    • fyi,neo4j 的节点自动索引功能应该自己处理删除的节点索引。
    • 是的,但是如果这是一个因素,它可能会导致性能下降。
    • 这个异常并不完全正确。当您尝试通过索引查询访问已删除节点时,有一种容错机制可以取消对已删除节点的索引。但是:有一个问题(与 id-recycling 相关,一种 neo4j 内部机制)可能导致索引损坏。因此,强烈建议手动从索引中删除索引节点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多