現在、Neo4jとPostGISでアイソクロンを扱っています。Neo4jアイソクロナス改善
neo4jの問題は、アイソクロンを計算するためのクエリが効率的でないことです。私は現在、最大ホップ数の制限を持っている上に、それ以外の場合は、最大のコストを計算する前に、私のデータベース内のすべての可能なパスを検索しますので、あなたがコード内で見ることができるように
match (n:node) where n.id_gis='155'
with n
match path=(n)-[*0..15]-(e)
with e, min(reduce(cost=0.0, r IN rels(path) | cost + toFloat(r.cost2)*3600)) as cost
where cost < 30
return cost, collect(e) as isochrones
order by cost
。
誰かが私の変更をどのように変更して、「正常な」時間に実行され、関係の量を制限することなくクエリを改善できるか考えていますか?
ありがとう、それは良い解決策のようです。 単一のパスごとにマップを保存するにはどうすればよいですか? – roman11
すべてのパスのマップはなぜですか?このマップは、到達可能なノードとコストの両方の集約を表しており、定義上一意です。 –
私はそれを得たと思う。 depthFirstではなくdijkstraのような関係の "コスト"特性に応じてトラバースする方法があるかどうかを知っていますか? 私は独自のCostEvaluatorやPathExpanderの実装について何かを読んだことがありますが、それは非常に複雑です。 – roman11