我刚刚在我的服务器上设置了Neo4j Spatial插件,并且我使用SDN 3.1.2来创建我的wkt索引:
@Indexed(indexName = "CarsLocation", indexType = IndexType.POINT) var wkt: String
整个工作很棒,我可以像这样使用HTTP控制台进行涉及withinDistance
的查询,返回匹配的节点:
POST /db/data/ext/SpatialPlugin/graphdb/findGeometriesWithinDistance {"layer":"CarsLocation","pointX":48.892501,"pointY":2.373140,"distanceInKm":100.0}
但是,我想使用Cypher这样查询:
start n = node:CarsLocation("withinDistance:[48.892501,2.373140,100.0]") return n
它只返回0行,无论值是什么。
我遇到this帖子,建议手动将Car节点添加到空间索引:CarsLocation。
所以我执行了这个命令:
POST /db/data/index/node/CarsLocation {"value":"dummy","key":"dummy", "uri":"http://localhost:7474/db/data/node/30"} //30 being the Car node I want to index
但它也没有使密码查询起作用。
我也尝试通过http调用执行Cypher:
POST /db/data/cypher {"query" : "start n = node:CarsLocation({indexQuery}) return n", "params": {"indexQuery": "withinDistance:[48.892067, 2.373140, 10.0]"}}
也不起作用。
然而,当我指定大量的公里数(IMO超过极限)时,这个通过:
start n = node:CarsLocation("withinDistance:[48.892501,2.373140,10000.0]") return n
(返回我的Car节点30)。
我是否错过了重要的事情?
我不知道哪里可能是错误,阻止Cypher查询工作。
我指出我正在使用Neo4j 2.1.2。
答案 0 :(得分:1)
Mik378,
这里的问题非常简单。 ' withinDistance' Cypher空间索引查询有一个怪癖(就我而言,这是一个错误)。您必须先指定纬度,然后指定经度。我不熟悉SDN,因此我不知道您是否还需要执行显式空间索引创建命令。
恩典与和平,
吉姆