4

我有一个Neo4j数据库,其内容是从一个大数据集动态生成的。

所有“入口点”节点都在一个命名索引( IndexManager.forNodes(…)) 上进行索引。因此,我可以查找特定的“入口点”节点。

但是,我现在想枚举所有这些特定节点,但我不知道它们在哪个键上被索引

有没有办法枚举 Neo4j索引的所有键?

如果不是,那么存储这些键的最佳方式是什么,一种非常不面向图的数据类型?


更新(感谢询问详细信息:)):列表将超过 200 万个条目。主要用例是在初始化步骤之后永远不要更新它,但其他用例可能需要它,因此它必须具有一定的可扩展性。

此外,我真的更希望避免杀死我当前的弹性能力,因此一次存储所有密钥,而不是增量添加它们,将是最后的解决方案。

4

4 回答 4

1

我会使用不同的数据存储来补充 Neo4j(我喜欢 Redis),或者尝试 @MattiasPersson 的建议并将列表存储在节点上。

于 2012-05-17T00:11:07.477 回答
0

而不是使用增加复杂性的不同存储,您可以再试一次

  1. Lucene 索引。通常 lucene 能够轻松处理这个问题,尤其是现在 MatchAllDocsQuery 更好。但一个问题是neo4j 人使用的是非常旧的lucene 版本。

  2. 每个节点中都有一个特殊的“参考”字段,特别是对于链接到下一个节点的键遍历情况,您可以轻松获得所有属性:)

于 2012-06-29T21:04:23.043 回答
0

它只是一个键列表还是每个节点的列表?您可以将这样的列表存储在特定节点上,例如参考节点。

于 2012-05-16T12:33:09.300 回答
-1

如果您想获取在特定索引中索引的所有节点,您可以这样做:

IndexHits<Node> hits = IndexManager.forNodes(<INDEX_NAME>).query("*:*");
try{
    while(hits.hasNext()){
        Node n = hits.next();
        ...process the node...
    }
}finally{
    hits.close();
}
于 2012-05-21T09:39:23.377 回答