一、LBS基于solr实现范围查找和距离
solr/item/select/?q=name:少女&sfield=location&pt=36.853222,116.433365&fl=name,location,_dist_:geodist()&fq={!geofilt}&d=20000
| 字段 |
含义 |
| q |
查询条件,如 q=poi_id:134567 |
| fq |
过滤条件,如 fq=store_name:农业 |
| fl |
返回字段,如fl=poi_id,store_name |
| pt |
坐标点,如pt=54.729696,-98.525391 |
| d |
搜索半径,如 d=10表示10km范围内 |
| sfield |
指定坐标索引字段,如sfield=geo |
| defType |
指定查询类型可以取 dismax和edismax,edismax支持boost函数相乘作用,dismax是通过累加方式计算最后的score. |
| qf |
指定权重字段:qf=store_name^10+poi_location_p^5 |
| score |
排序字段根据qf定义的字段defType定义的方式计算得到score排序输出 |
Group参数
Group和Facet的概念很像,都是用来分组。Facet返回所有相关的结果并允许用户基于facet的目录重新定义结果集。Facet可以对分组数量进行过滤,以及排序,和日期范围,时间范围分组,但是如果你想得到具体的数据,还得需要查询一次或多次。group可以得到分组的组数量,一次请求,可以拿到所有的数据。 注意:group在分布式搜索引擎下有些参数不支持
| 参数 |
类型 |
说明 |
| group |
布尔值 |
设为true,表示结果需要分组 |
| group.field |
字符串 |
需要分组的字段,字段类型需要时是 |

本文介绍了如何使用Solr实现基于位置的范围查找和距离计算,通过示例展示了LBS功能的应用。同时,探讨了Solr中的Group参数,与Facet的区别在于,Group能一次性获取分组的所有数据,而Facet可能需要额外查询。文章还预告了Solr中其他可用函数的后续更新。
最低0.47元/天 解锁文章
393

被折叠的 条评论
为什么被折叠?



