1

neo4j を使用して大規模なグラフ データベースを構築しています。

さらにneo4jグラフトラバーサルに使用する関連ノードの識別子を提供する独自の外部インデックスがあります。つまり、データベースにクエリを実行するときに、開始ノード ID を既に持っています。

私の質問は、neo4j/lucene インデックスを使用して関連するノードにアクセスすると、ノードのルックアップを高速化できますか?

または、次のようなクエリです。

START n=node({ids})

すでにノード アクセス用に最適化されており、以下を使用しても何も得られません。

START n=node:nodeIndexName(key={value})

?

ありがとう、

4

1 に答える 1

6

はい。Neo4j は、永続性レベルでノード ID に対して最適化されています。すべてのノードはブロックであるため、ノード 100 へのアクセスはブロック 100 へのアクセスと同じです。

ただし、ノード ID を削除した場合、Neo4j はノード ID について保証しないことを警告します。Neo4j は ID を回収します。したがって、DB の使用中に複数のノードを削除および追加した場合、外部エントリは「有効」である可能性がありますが、期待したものとは異なる場合があります。

//編集: また、Lucene を使用してルックアップを実行しないのはなぜですか? もちろん、ノード ID にアクセスする方が高速ですが、これはルックアップを行うときに Lucene が隠れて行うことなので、key:name, value:frank返さnode id 5123れ、neo4j はその ID に対応するノードを返します。

于 2013-06-08T22:32:51.500 に答える