2 つのノード間のすべてのパス (最大長まで) を見つける方法を見つけるのに何日も苦労していますが、Neo4j によるパスの探索は、探索される関係を (それらのプロパティの 1 つによって) 並べ替えることによって制御します。
明確にするために、最大長が M になるまで、2 つのノード間の K 個の最適なパスを見つけたいとしましょう。クエリは次のようになります。
match (source{name:"source"}), (target{name:"target"}),
p = (source)-[*..M]->(target)
return p order by length(p) limit K;
ここまでは順調ですね。しかし、パスの関係には「優先度」と呼ばれるプロパティがあるとしましょう。私が望むのは、パス探索の各ステップで、どの関係を最初に探索する必要があるかを Neo4j に伝えるクエリを作成することです。
Java ライブラリと組み込みデータベースを使用すると、それが可能になることがわかっています (PathExpander インターフェイスを実装し、それを Java の GraphAlgoFactory.allSimplePaths() 関数への入力として与えることにより)。しかし今、Bolt または REST API を使用してサーバー モードのデータベース アクセスでこれを行う方法を見つけようとしています。
サーバーモードでこれを行う方法はありますか? それとも、サーバー モードでグラフにアクセスしているときに Java ライブラリ関数を使用しているのでしょうか。