4

大きなデータセットからコンテンツが動的に生成される Neo4j データベースがあります

すべての「エントリ ポイント」ノードは、名前付きインデックス( IndexManager.forNodes(…)) でインデックス化されます。したがって、特定の「エントリ ポイント」ノードを検索できます。

ただし、これらの特定のノードをすべて列挙したいと思いますが、それらがどのキーでインデックス化されたのかわかりません

Neo4j Indexのすべてのキーを列挙する方法はありますか?

そうでない場合、これらのキー、つまりグラフ指向ではないデータ型を格納する最良の方法は何でしょうか?


更新(詳細を尋ねてくれてありがとう:)): リストは 200 万を超えるエントリになります。主なユースケースは、初期化ステップの後に更新しないことですが、他のユースケースで必要になる可能性があるため、ある程度スケーラブルである必要があります。

また、現在のレジリエンス能力を失うことは避けたいので、キーを段階的に追加するのではなく、一度にすべてのキーを保存するのが最後の手段です。

4

4 に答える 4

1

別のデータ ストアを使用して Neo4j を補完するか (私は Redis が好きです)、または @MattiasPersson の提案を試してノードにリストを保存します。

于 2012-05-17T00:11:07.477 に答える
0

複雑さを増す別のストレージを使用する代わりに、もう一度試すことができます

  1. ルセン指数。通常、lucene はこれを簡単に処理できます。特に MatchAllDocsQuery の方が優れているためです。しかし、問題の 1 つは、neo4j の連中が非常に古い lucene バージョンを使用していることです。

  2. 特にこのキートラバーサルの場合、すべてのプロパティを簡単に取得できる次のノードにリンクする、すべてのノードの特別な「参照」フィールド:)

于 2012-06-29T21:04:23.043 に答える
0

キーのリストは 1 つだけですか、それともノードごとのリストですか? このようなリストを特定のノード、たとえば参照ノードに保存できます。

于 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 に答える