我希望能够按分数和位置订购我的搜索结果。数据库中的每个用户都有lat / lot,我正在编制索引:
location :coordinates do
Sunspot::Util::Coordinates.new latlon[0], latlon[1]
end
我将执行搜索的模型也以相同的方式编入索引。基本上我想要实现的是结果按分数排序,然后按位置排序。因此,如果我搜索沃尔玛,我希望看到所有沃尔玛的地理位置靠近我的位置。
我记得读过一些关于solr的新地理排序但不确定它是否超出alpha和/或sunspot是否实现了包装器。
你会推荐什么?
答案 0 :(得分:6)
由于太阳黑子计算位置类型的方式,您需要做一些额外的腿部工作,以便按目标距离进行排序。它的工作方式是为每个点创建一个地理哈希,然后使用常规全文搜索对该地理哈希进行搜索。结果是你可能无法确定10公里以外的点是否比5公里以外的点更远,但是你可以判断50公里以外的点是否比1-2公里以外的点还要远。 。确切的距离是任意的,但结果是你可能没有像你想要的那样精细的结果,而搜索更像是一种过滤在可接受的接近范围内的点的方法。使用内置位置搜索过滤点后,有三种方法可以实现您的目标: