1

我需要返回半径相交的所有对象。换句话说,两个物体的半径之和大于它们之间的距离。

例如,假设我有以下对象,我的搜索中心是 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_在查询中使用伪字段作为值吗?

4

0 回答 0