在Solr中按距离与场值进行过滤

时间:2015-07-13 22:26:23

标签: solr

我有一个架构,其中包含要显示的结果的最大半径 - 例如,50。我能够毫无问题地计算距离和过滤器,但我真的需要按照该字段进行过滤,该字段由文件到文件。我试过了:

fq={!frange l=0 u=radius_field}geodist()

fq={!func}geodist():[0 TO radius_field]

无效。有没有办法做到这一点?我可以过滤客户端,最糟糕的情况,但我认为那里有人有相同的用例。

2 个答案:

答案 0 :(得分:0)

不是直接答案,但如果is_in_range(radius_field)小于geodist()参数,您是否可以创建一个返回布尔结果的新函数radius_field?这可能会避免您尝试使用参数按范围过滤时发现的问题。

答案 1 :(得分:0)

它很难看,但我想我没有自定义功能就可以使用它。我知道这是旧的,但想发布以防其他人正在寻找。

fq={!frange l=0 h=12742}sub(radius_field,geodist(field,point))

12742是以千米为单位的地球直径,因为我还需要一个硬数字,但我怀疑大多数是在太空搜索。所以基本上我们从radius_field中减去距离以确定它是否在范围内。

radius_field - 距离

如果结果是正数而不是在范围内。如果是负数而不是负数。如果我搞砸了我的逻辑,请告诉我。感谢。