2016-06-12 49 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参数中有很多地方,我已经观察到相当差的性能。

我的解决方法是从相当小的距离值开始。如果在该范围内没有结果,请增加它并重试。