加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 按地理位置排序Solr /太阳黑子搜索结果

发布时间:2020-12-17 03:00:20 所属栏目:百科 来源:网络整理
导读:我希望能够按分数和位置订购我的搜索结果.数据库中的每个用户都有lat / lot,我目前正在编制索引: location :coordinates do Sunspot::Util::Coordinates.new latlon[0],latlon[1] end 我将执行搜索的模型也以相同的方式编入索引.基本上我想要实现的是结果按
我希望能够按分数和位置订购我的搜索结果.数据库中的每个用户都有lat / lot,我目前正在编制索引:

location :coordinates do
  Sunspot::Util::Coordinates.new latlon[0],latlon[1]      
end

我将执行搜索的模型也以相同的方式编入索引.基本上我想要实现的是结果按分数排序,然后按位置排序.因此,如果我搜索沃尔玛,我希望看到所有沃尔玛的地理位置靠近我的位置.

我记得读过关于solr的新geo-sort的东西,但不确定它是否超出alpha和/或sunspot是否实现了包装器.

你会推荐什么?

解决方法

由于太阳黑子计算位置类型的方式,你需要做一些额外的腿部工作,以便按目标距离进行排序.它的工作方式是为每个点创建一个地理哈希,然后使用常规全文搜索对该地理哈希进行搜索.结果是你可能无法确定10公里以外的点是否比5公里以外的点更远,但是你可以判断50公里以外的点是否比1-2公里以外的点还要远. .确切的距离是任意的,但结果是你可能没有像你想要的那样精细的结果,而搜索更像是一种过滤在可接受的接近范围内的点的方法.使用内置位置搜索过滤积分后,有三种方法可以完成您想要的操作:

>升级到Solr 3.1或更高版本以及upgrade your schema.xml to use the new spatial search columns.然后,您需要对Sunspot进行自定义修改,以创建适用于这些新数据类型的字段和排序.据我所知,这些在Sunspot中还没有,所以你必须自己建立这些连接,你必须在Solr中挖掘一些手动配置.
>利用Spatial Solr Plugin.你必须在你的Solr目录中安装一个新的JAR,你必须对太阳黑子做一些修改,但它们相对无痛,完整的指令可以在here找到.>利用您的数据库,如果您的数据库也在位置列上编入索引,那么您可以使用太阳黑子内置位置搜索将结果过滤到合理大小的集合.然后,您可以在数据库中查询这些结果,并使用您自己的距离函数靠近您的位置进行排序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读