2016-06-12 70 views
0

我的目標是根據給定的經度和緯度找到最近的節點。我已經創建了簡單點層,並且我正在使用findClosestGeometies查詢,但即使數據庫相對較小,響應時間也相當不滿意。下面的操作我執行創建我的層:在Neo4j中提高尋找最近節點的性能Spatial

:POST /db/data/ext/SpatialPlugin/graphdb/addSimplePointLayer { 
    "layer" : "layerName", 
    "lat" : "NODE_LAT", 
    "lon" : "NODE_LON" 
} 

:POST /db/data/index/node {"name":"layerName", "config": 
    {"provider":"spatial", "geometry_type":"point", "lat":"NODE_LAT", "lon":"NODE_LON"} 
} 

match(n:WAY_NODE) set n.id=ID(n); 

然後用我說〜70K節點層和運行示例查詢簡單的Java程序:

:POST db/data/ext/SpatialPlugin/graphdb/findClosestGeometries { 
    "pointX" : 18.5640344020454, 
    "pointY" : 54.4441138296926, 
    "distanceInKm" : 1.0, 
    "layer" : "layerName" 
} 

它的工作,但每一個響應需要更多或少於8秒。有沒有辦法加快速度?任何想法我應該使用什麼?

回答

0

如果在提供的distance參數中有很多地方,我已經觀察到相當差的性能。

我的解決方法是從相當小的距離值開始。如果在該範圍內沒有結果,請增加它並重試。