获取Neo4j索引的所有密钥

时间:2012-05-15 20:33:34

标签: indexing neo4j lucene

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

所有“入口点”节点都在named indexIndexManager.forNodes(…))上建立索引。因此,我可以查找特定的“入口点”节点。

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

有没有办法枚举Neo4j的所有键Index

如果没有,那么存储这些密钥的最佳方式是什么,这种数据类型非常不以图形为导向?


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

另外,我真的更愿意避免杀死我当前的弹性能力,因此一次存储所有键,而不是逐步添加它们,将是最后的解决方案。

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

不是使用增加复杂性的不同存储,而是可以使用

重试
  1. lucene指数。通常lucene能够轻松处理这个问题,特别是现在MatchAllDocsQuery更好。但有一个问题是neo4j家伙正在使用一个非常古老的lucene版本。

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

答案 3 :(得分:-1)

如果你想获得所有在特定索引中编入索引的节点,你可以这样做:

IndexHits<Node> hits = IndexManager.forNodes(<INDEX_NAME>).query("*:*");
try{
    while(hits.hasNext()){
        Node n = hits.next();
        ...process the node...
    }
}finally{
    hits.close();
}