我需要返回半径相交的所有对象。换句话说,两个物体的半径的增加大于它们之间的距离。
例如,假设我有以下对象,而我的搜索中心是A
A, radius=3k
B, radius=5k, distance from A = 6k
C, radius=15k, distance from A = 100k
使用上面的对象,如果我的搜索中心是对象A,我只需要返回对象B.系统中可能有数千个对象,搜索中心可以在任何一个对象中。
我用solr实现了简单的地理距离过滤(即从A给我3k的所有东西),但我不知道从这个查询开始到哪里。这可能与Solr有关吗?我可以访问数据,因此在将文档加载到solr之前,我可以预先计算任何必要的值来帮助查询。另外,我正在使用Solr 4。
提前致谢!
修改
我刚才想到的是,我真正需要的是获得A(搜索中心)的半径以及查询本身内正在检查的其他任何对象,以便我可以使用它们之间的差异。我现在使用的查询只返回点x,y:
的3k内的任何内容fl=*,_dist_:geodist()&fq={!geofilt}&pt=x,y&sfield=location&d=3&q=*:*
d=3
参数必须类似于d=(doc1.radius + doc2.radius) >= _dist_
。我想问题是如何在查询中引用要比较的文档元素?我可以在查询中使用伪字段_dist_
作为值吗?