Model.solr_search不适用于地理空间过滤器

时间:2015-05-21 06:53:58

标签: ruby-on-rails-4 solr geospatial sunspot-solr

我已配置sunspot-2.1.1

问题

  • 我想搜索范围内20英里以内的所有产品是Product模型的代码

             Product.search do
                fulltext(params[:search][:keyword])
                order_by_geodist(:location, current_user.lat, current_user.lng)
                with(:location).in_radius(current_user.lat, current_user.lng, mile_to_km)
    
                paginate page: params[:page], per_page: GlobalConstant::SEARCH_RESULT_PER_PAGE
              end
    

注意:上面的代码在开发环境中正常工作,它在生产环境中无法正常工作。我也试过重新索引solr,但没有运气:(

我在搜索页面以外的地方添加了以下代码,其中我显示了基于半径的产品列表,并且它正在运行:

             Sunspot.search [Product] do
                without(:sale_status, 'draft')
                with(:user_id, current_user.id)
                unless current_user.location.blank?
                  order_by_geodist(:location, current_user.lat, current_user.lng)
                  with(:location).in_radius(current_user.lat, current_user.lng, (mile_to_km))
                end

                paginate page: params[:page], per_page: GlobalConstant::TIMELINE_PER_PAGE
              end

我缺少什么,为什么它不在生产环境中工作并且在开发环境中工作。?

由于

1 个答案:

答案 0 :(得分:0)

我真的很抱歉打开这个问题,我是愚蠢的,谁创建了searches_controller_backup.rb,其旧代码未配置geospatial过滤功能。

问题是一切正常,但由于rails正在从备份文件中加载search_controller代码,因此假设它看起来不起作用。

有了这个说明,上面两个代码都运行正常,没有任何问题....所以Model.solr_searchgeospatial filter无关。

删除备份文件或将扩展程序更改为.rb以外的其他问题