0

withinDistanceCypher で正しく動作するのに 問題があります。

レイヤーを作成し、ジオメトリを追加し、空間 RESTfindGeometriesWithinDistanceを使用してインデックスとクエリを問題なく呼び出すことができます。

  1. POST /db/data/ext/SpatialPlugin/graphdb/addEditableLayer {"layer":"yada"}
  2. POST /db/data/ext/SpatialPlugin/graphdb/addGeometryWKTToLayer { "layer":"yada","geometry":"LINESTRING (-87.8269667076541 42.5931258671059,-87.8280193743192 42.5930348004394,-87.8284217076519 42.5931722004391)"}
  3. POST /db/data/ext/SpatialPlugin/graphdb/addGeometryWKTToLayer {"layer":"yada","geometry":"LINESTRING (-87.8118643076776 42.588086600447,-87.8183341743342 42.5876782004477,-87.818426974334 42.5877468671142)"}
  4. POST /db/data/index/node/ {"name":"yada", "config":{"provider":"spatial","wkb":"wkb"}}
  5. POST /db/data/ext/SpatialPlugin/graphdb/findGeometriesWithinDistance {"layer":"yada","distanceInKm":2,"pointX":-87.845556,"pointY":42.582222}

ただし、withinDistanceCypherを使用して呼び出すと、たとえば

  • POST /db/data/cypher {"query":"START n=node:yada('withinDistance:[-87.845556,42.582222,10.0]') RETURN n"}

私は戻ってきます

400 Bad Request
{
  "message" : "only within, WITHINDISTANCE and bbox are implemented.",
  "exception" : "BadInputException",
  "stacktrace" : [ "org.neo4j.server.rest.repr.RepresentationExceptionHandlingIterable.exceptionOnHasNext(RepresentationExceptionHandlingIterable.java:50)", "org.neo4j.helpers.collection.ExceptionHandlingIterable$1.hasNext(ExceptionHandlingIterable.java:60)", "org.neo4j.helpers.collection.IteratorWrapper.hasNext(IteratorWrapper.java:42)", "org.neo4j.server.rest.repr.ListRepresentation.serialize(ListRepresentation.java:58)", "org.neo4j.server.rest.repr.Serializer.serialize(Serializer.java:75)", "org.neo4j.server.rest.repr.MappingSerializer.putList(MappingSerializer.java:61)", "org.neo4j.server.rest.repr.CypherResultRepresentation.serialize(CypherResultRepresentation.java:57)", "org.neo4j.server.rest.repr.MappingRepresentation.serialize(MappingRepresentation.java:42)", "org.neo4j.server.rest.repr.OutputFormat.assemble(OutputFormat.java:179)", "org.neo4j.server.rest.repr.OutputFormat.formatRepresentation(OutputFormat.java:131)", "org.neo4j.server.rest.repr.OutputFormat.response(OutputFormat.java:117)", "org.neo4j.server.rest.repr.OutputFormat.ok(OutputFormat.java:55)", "org.neo4j.server.rest.web.CypherService.cypher(CypherService.java:75)", "java.lang.reflect.Method.invoke(Method.java:601)" ],
  "cause" : {
    "message" : "only within, WITHINDISTANCE and bbox are implemented.",
    "exception" : "UnsupportedOperationException",
    "stacktrace" : [ "org.neo4j.gis.spatial.indexprovider.LayerNodeIndex.query(LayerNodeIndex.java:277)", "org.neo4j.cypher.internal.spi.gdsimpl.GDSBackedQueryContext$$anon$1.indexQuery(GDSBackedQueryContext.scala:83)", "org.neo4j.cypher.internal.executionplan.builders.IndexQueryBuilder$$anonfun$getNodeGetter$2.apply(IndexQueryBuilder.scala:83)", "org.neo4j.cypher.internal.executionplan.builders.IndexQueryBuilder$$anonfun$getNodeGetter$2.apply(IndexQueryBuilder.scala:81)", "org.neo4j.cypher.internal.pipes.StartPipe$$anonfun$internalCreateResults$1.apply(StartPipe.scala:36)", "org.neo4j.cypher.internal.pipes.StartPipe$$anonfun$internalCreateResults$1.apply(StartPipe.scala:35)", "scala.collection.Iterator$$anon$13.hasNext(Iterator.scala:371)", "org.neo4j.cypher.internal.ClosingIterator$$anonfun$hasNext$1.apply$mcZ$sp(ClosingIterator.scala:36)", "org.neo4j.cypher.internal.ClosingIterator$$anonfun$hasNext$1.apply(ClosingIterator.scala:35)", "org.neo4j.cypher.internal.ClosingIterator$$anonfun$hasNext$1.apply(ClosingIterator.scala:35)", "org.neo4j.cypher.internal.ClosingIterator.failIfThrows(ClosingIterator.scala:86)", "org.neo4j.cypher.internal.ClosingIterator.hasNext(ClosingIterator.scala:35)", "org.neo4j.cypher.PipeExecutionResult.hasNext(PipeExecutionResult.scala:142)", "scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)", "scala.collection.convert.Wrappers$IteratorWrapper.hasNext(Wrappers.scala:29)", "org.neo4j.helpers.collection.ExceptionHandlingIterable$1.hasNext(ExceptionHandlingIterable.java:58)", "org.neo4j.helpers.collection.IteratorWrapper.hasNext(IteratorWrapper.java:42)", "org.neo4j.server.rest.repr.ListRepresentation.serialize(ListRepresentation.java:58)", "org.neo4j.server.rest.repr.Serializer.serialize(Serializer.java:75)", "org.neo4j.server.rest.repr.MappingSerializer.putList(MappingSerializer.java:61)", "org.neo4j.server.rest.repr.CypherResultRepresentation.serialize(CypherResultRepresentation.java:57)", "org.neo4j.server.rest.repr.MappingRepresentation.serialize(MappingRepresentation.java:42)", "org.neo4j.server.rest.repr.OutputFormat.assemble(OutputFormat.java:179)", "org.neo4j.server.rest.repr.OutputFormat.formatRepresentation(OutputFormat.java:131)", "org.neo4j.server.rest.repr.OutputFormat.response(OutputFormat.java:117)", "org.neo4j.server.rest.repr.OutputFormat.ok(OutputFormat.java:55)", "org.neo4j.server.rest.web.CypherService.cypher(CypherService.java:75)", "java.lang.reflect.Method.invoke(Method.java:601)" ]
  }

この動作がいつ始まったのかはわかりませんが、最近のことのようです。ここで何か間違ったことをしていますか?

ありがとう、ポール

  • neo4j 1.9.M05
  • neo4j 空間 0.11
  • jdk1.7.0_17
4

1 に答える 1

0

REST リクエストは機能するが Cypher が機能しないという同様の問題がありました。解決策は、標準的な方法で別の「通常の」ノード インデックス (つまり、空間インデックスではなく lucene インデックス) を作成し、空間インデックスと同じ名前を付けることでした。

あなたの例ではyada、と呼ばれる空間インデックスを作成し、サイファーを機能させるために、ここで説明されていることを実行し、標準のneo4jノードインデックスを作成してから、それにノードを追加します。

次に、Cypher を介して withinDistance クエリを実行できます。START n=node:yada('*:*') RETURN n;ただし、空間クエリしか実行できないように、標準の Cypher クエリを実行することはできません。

これは、Windows の Neo4j 1.9 で発生しました。

于 2013-12-17T14:45:30.867 に答える