首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过关联进行SunSpot地理搜索

通过关联进行SunSpot地理搜索
EN

Stack Overflow用户
提问于 2011-05-20 14:22:10
回答 1查看 683关注 0票数 2
代码语言:javascript
复制
class Office < ActiveRecord::Base
    has_many :users

    searchable do
       text :name
       location :coordinates do
           Sunspot::Util::Coordinates.new(latitude, longitude) 
       end 
    end     
end

class User < ActiveRecord::Base
    belongs_to  :office

    searchable do
        text :name, :default_boost => 2
        text :description
    end
end

使用这种设置,我如何在给定的经度/纬度范围内使用SunSpot (on Solr) on Rails搜索用户?例如,我希望能够这样做:

代码语言:javascript
复制
  @search  = User.search() do
    fulltext(params[:q])
    with(:coordinates).near(@lat, @long, :precision => 5)
  end

下面的代码运行得很好:

代码语言:javascript
复制
  @search  = Office.search() do
    fulltext(params[:q])
    with(:coordinates).near(@lat, @long, :precision => 5)
  end

假设每个用户的经度/经度都位于Office类中,那么实现这一目标的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-20 14:59:20

office关联应该在用户的可搜索块的范围内。

鉴于此,我将从以下内容开始(未经测试,不假思索,等等):

代码语言:javascript
复制
class User < ActiveRecord::Base
  belongs_to  :office

  searchable do
    text :name, :default_boost => 2
    text :description
    location :coordinates do
      Sunspot::Util::Coordinates.new(office.latitude, office.longitude)
    end
  end
end

在这样的块中获取相关对象的值实际上是使用Sunspot处理反规范化的一种非常常见的模式。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6068186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档