Neo4jにグラフがあり、ノードは平面内のランダムな点を表し、各ノードにはプロパティとして保存された座標があります(xとy、値のタイプはdouble
)。
ノードを作成してインデックスを作成します。
IndexManager index = graph.index();
Index<Node> nodesIndex = index.forNodes("points");
for (int i = 0; i < points.length; i++) {
Point p = points[i];
Node n;
Transaction tx = graph.beginTx();
try {
n = graph.createNode();
n.setProperty("x", p.getX());
n.setProperty("y", p.getY());
nodesIndex.add(n, "x", new ValueContext(p.getX()).indexNumeric());
nodesIndex.add(n, "y", new ValueContext(p.getY()).indexNumeric());
tx.success();
} finally {
tx.finish();
}
}
さて、私がする必要があるのは、正方形の領域にあるノードを照会することです。たとえば、次のクエリを実行しました。
http://localhost:7474/db/data/index/node/points?query=x:[0.0 TO 3.0] AND y:[0.0 TO 3.0]
そして、これは応答です:
Node
Properties
y 1.0
x 14.0
Node info
self /db/data/node/10
Node
Properties
y 1.0
x 2.0
Node info
self /db/data/node/7
Node
Properties
y 1.0
x 6.0
Node info
self /db/data/node/8
Node
Properties
y 1.0
x 7.0
Node info
self /db/data/node/9
[Etc...]
ご覧のとおり、機能していません。そして、その理由がわかりません(おそらく、インデックスを構成する必要がありますか?)。Luceneを使用する必要が
ないことに注意してください。Cypherを使用してその情報を収集する方法がある場合(正方形の領域の中央にあるノードから開始する)、実際にはより良いでしょう。なぜなら、見つかったノード間の関係も必要だからです。
追加情報 それが重要な場合、グラフは平面上のランダムな点のセットでのドロネー三角形分割を表します。より抽象的な言葉で言えば、特定の領域にあるサブグラフ全体を「抽出」する必要があります。
どんな助けでも本当にありがたいです!