我正在使用 Neo4j 2.0 的空间服务器插件,并设法将用户和城市及其地理属性 lat/lon 添加到空间索引“geom”。不幸的是,我无法通过 Neo4jClient 获取正确的语法:(我想要的基本上是:
将密码查询转换
START n=node:geom('withinDistance:[60.0,15.0, 100.0]') RETURN n;
为 Neo4jClient 语法,这样我就可以从指定点获取给定距离内的所有用户。如果可以将节点及其各自的距离返回到该点,则更有帮助?
有没有办法在不指定距离的情况下从给定点获取最近的用户或城市?
更新
经过反复试验,我解决了问题 1 以及通过 Neo4jClient 与 Neo4j 空间通信的问题。下面 Neo4jClient 查询返回 1 个用户,但只返回最近的一个,即使数据库包含 2 个应该返回的用户。我还通过网络界面尝试了普通的密码,但没有任何运气。我是否完全误解了 withinDistance 应该做什么?:) 真的没有人可以对上面的问题 2 和 3 提供一点见解吗?将不胜感激!
var queryString = string.Format("withinDistance:[" + latitude + ", " + longitude + ", " + distance + "]");
var graphResults = graphClient.Cypher
.Start(new { user = Node.ByIndexQuery("geom", queryString) })
.Return((user) => new
{
EntityList = user.CollectAsDistinct<UserEntity>()
}).Results;