我正在使用 Neo4j 1.8.2 和 Neo4j Spatial 0.9 for 1.8.2 ( http://m2.neo4j.org/content/repositories/releases/org/neo4j/neo4j-spatial/0.9-neo4j-1.8.2/ )
按照此处http://architects.dzone.com/articles/neo4jcypher-finding-football的示例代码进行了一次更改-而不是 SpatialIndexProvider.SIMPLE_WKT_CONFIG,我使用了 SpatialIndexProvider.SIMPLE_POINT_CONFIG_WKT
一切正常,直到您执行以下查询:
START n=node:stadiumsLocation('withinDistance:[53.489271,-2.246704, 5.0]')
RETURN n.name, n.wkt;
n.name 为空。当我浏览图表时,我发现了以下数据:
Node[80]{lon:-2.20024,lat:53.483,id:79,gtype:1,bbox:-2.20024,53.483,-2.20024,53.483]}
Node[168]{lon:-2.29139,lat:53.4631,id:167,gtype:1,bbox:-2.29139,53.4631,-2.29139,53.4631]}
对于返回的节点 80,看起来这是为空间记录创建的节点,其中包含属性 id:79。节点 79 是示例中的实际体育场记录。
根据IndexProviderTest的来源,评论 //我们不再需要这个,因为我们返回的节点已经是一个“真实”节点 // Node node = db.getNodeById( (Long) spatialRecord.getProperty( "id" ) ); 似乎表明此功能在我使用的版本中不可用。
我的问题是,将 withinDistance 与其他匹配条件一起使用的推荐方法是什么?还有几个其他条件需要满足,但我似乎无法掌握实际节点以实际匹配它们。我应该明确创建关系吗?不使用 Cypher 并使用核心 API 进行遍历?拆分查询?