我已配置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
我缺少什么,为什么它不在生产环境中工作并且在开发环境中工作。?
由于
答案 0 :(得分:0)
我真的很抱歉打开这个问题,我是愚蠢的,谁创建了searches_controller_backup.rb
,其旧代码未配置geospatial
过滤功能。
问题是一切正常,但由于rails正在从备份文件中加载search_controller代码,因此假设它看起来不起作用。
有了这个说明,上面两个代码都运行正常,没有任何问题....所以Model.solr_search
与geospatial filter
无关。
删除备份文件或将扩展程序更改为.rb
以外的其他问题