我在solr中使用空间并在运行中生成dist:geodist()参数。如何按距离范围对结果进行分组,即
?group.query=dist[0 To 3]&group.query[3 TO 5]
如果我尝试上述查询,它会告诉我没有“dist”字段。如果我尝试使用geodist(),它告诉我它无法解析它。
答案 0 :(得分:0)
您可以使用function range queries:...&group.query={!frange l=0 u=3}geodist()...
。
您应该在参数中使用incl=false
或incu=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)
,但这会使以这种方式控制粒度(范围)变得更加困难。