如何按Solr中的距离范围分组

时间:2016-10-28 20:11:19

标签: solr

我在solr中使用空间并在运行中生成dist:geodist()参数。如何按距离范围对结果进行分组,即

?group.query=dist[0 To 3]&group.query[3 TO 5]

如果我尝试上述查询,它会告诉我没有“dist”字段。如果我尝试使用geodist(),它告诉我它无法解析它。

1 个答案:

答案 0 :(得分:0)

您可以使用function range queries...&group.query={!frange l=0 u=3}geodist()...

您应该在参数中使用incl=falseincu=false,以防止在结果组中出现重复项(相当于范围[0 To 3] and ]3 TO 5][0 To 3[ and [3 TO 5])。

查询看起来像:

q=*:*&spatial=true&pt=0.0,0.0&sfield=geofield&group=true&group.query={!frange l=0 u=3}geodist()&group.query={!frange l=3 u=5 incl=false}geodist()

您还可以将geodist()用作组函数,例如:group.func=geodist(geofield,0.0,0.0),但这会使以这种方式控制粒度(范围)变得更加困难。