0

サーバーに Neo4j Spatial プラグインを設定し、SDN 3.1.2 を使用して wkt インデックスを作成しています。

@Indexed(indexName = "CarsLocation", indexType = IndexType.POINT) var wkt: String

withinDistance全体がうまく機能し、次のように HTTP コンソールを使用してクエリを作成し、一致したノードを返すことができます。

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行を返すだけです。

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

(私の車のノード 30 を返します)。

何か重要なことを見逃しましたか?

Cypherクエリが機能しないために、どこが間違いなのかわかりません。

私はNeo4j 2.1.2を使用していることを指摘しています。

4

1 に答える 1

1

Mik378、

ここでの問題は非常に単純です。「withinDistance」Cypher 空間インデックス クエリには癖があります (私に関する限り、バグです)。最初に緯度を指定し、次に経度を指定する必要があります。私は SDN に詳しくないので、明示的な空間インデックス作成コマンドも実行する必要があるかどうかはわかりません。

恵みと平和、

ジム

于 2014-08-21T16:48:22.687 に答える