在Neo4j空间查询中对节点进行排序和过滤

时间:2014-09-25 19:39:06

标签: lucene neo4j neo4j-spatial

是否可以按地理距离和节点属性过滤Neo4j中的节点,返回节点除了距离之外的其他顺序(如时间戳)。我可以使用标准的基于lucene的索引和neo4j geo层来做其中一个,但我似乎无法将两者结合起来提供全面的查找。如何实现这一点的任何想法将非常感激。非常感谢,詹姆斯。

1 个答案:

答案 0 :(得分:0)

是的,see this blog post

您必须有一个LayerNodeIndex,您已将节点添加到:

LayerNodeIndex layerIndex = new LayerNodeIndex("layerIndex", graphDb, config);

然后你只查询索引:

IndexHits hits  = index.query(LayerNodeIndex.WITHIN_DISTANCE_QUERY, params);

Double coords = new Double[]{ 10.415039d, 51.151786d };
Map<String, Object> params = new HashMap<String, Object>();

params.put(LayerNodeIndex.POINT_PARAMETER, coords.toArray());
params.put(LayerNodeIndex.DISTANCE_IN_KM_PARAMETER, dist);

IndexHits hits  = index.query(LayerNodeIndex.WITHIN_DISTANCE_QUERY, params);