Lucene geo空间环查询

Lucene geo spatial ring query

我想使用 Lucene 空间搜索在具有内半径和外半径的环中查找点。查询应 return 外半径内但内半径外的点。你怎么做到这一点?下面的代码是我尝试这样做的。这是正确的做法吗?

SpatialContext ctx = SpatialContext.GEO;
Circle innerCircle = ctx.makeCircle(lng, Lat, innerRadius);     
SpatialArgs innerArgs = new SpatialArgs(SpatialOperation.IsDisjointTo, innerCircle);        
Filter filter = strategy.makeFilter(innerArgs);     

Circle outerCircle = ctx.makeCircle(lng, Lat, outerRadius);     
SpatialArgs outerArgs = new SpatialArgs(SpatialOperation.Intersects, outerCircle);      
Query query = strategy.makeQuery(outerArgs);        

IndexSearcher searcher = new IndexSearcher(indexReader);
TopDocs docs = searcher.search(query, filter, 50);      

基本上是使用Query和Filter来实现两个空间操作之间的AND。虽然感觉很老套。这行得通吗?有没有更好的方法?

由于您使用的是简单的圆环,您可以在 geoDist 函数上使用 frange,以达到您想要的结果。

例如。要获得半径在 2 公里到 3 公里之间的结果,您可以使用这样的东西,

    fq={!frange l=2 u=3}geodist()