Ruby on rails 按地理位置排序Solr/太阳黑子搜索结果
我想能够按分数和位置排序我的搜索结果。数据库中的每个用户都有lat/lot,我目前正在编制索引:Ruby on rails 按地理位置排序Solr/太阳黑子搜索结果,ruby-on-rails,ruby,solr,ruby-on-rails-plugins,sunspot,Ruby On Rails,Ruby,Solr,Ruby On Rails Plugins,Sunspot,我想能够按分数和位置排序我的搜索结果。数据库中的每个用户都有lat/lot,我目前正在编制索引: location :coordinates do Sunspot::Util::Coordinates.new latlon[0], latlon[1] end 我将对其执行搜索的模型也以相同的方式编制索引。从本质上说,我试图实现的是,结果按分数排序,然后按位置排序。因此,如果我搜索沃尔玛,我希望看到所有沃尔玛的订单,他们的地理位置接近我的位置 我记得读过一些关于solr新的geo
location :coordinates do
Sunspot::Util::Coordinates.new latlon[0], latlon[1]
end
我将对其执行搜索的模型也以相同的方式编制索引。从本质上说,我试图实现的是,结果按分数排序,然后按位置排序。因此,如果我搜索沃尔玛,我希望看到所有沃尔玛的订单,他们的地理位置接近我的位置
我记得读过一些关于solr新的geo排序的文章,但不确定它是否超出了alpha和/或太阳黑子是否实现了一个包装器
你有什么建议吗?因为太阳黑子计算位置类型的方式,你需要做一些额外的腿部工作,让它也按距离目标排序。它的工作方式是为每个点创建一个geo散列,然后使用常规全文搜索对该geo散列进行搜索。结果是,您可能无法确定10公里以外的点是否比5公里以外的点更远,但您可以判断50公里以外的点是否比1-2公里以外的点更远。精确的距离是任意的,但结果可能不会像您希望的那样具有细粒度的结果,搜索更像是一种过滤在可接受的接近范围内的点的方法。使用内置位置搜索过滤点后,有三种方法可以实现您的目标: