Rails 太阳黑子 + 空间搜索 + 父级分组
Rails Sunspot + spatial search + group by parent
我的应用程序有一个路线列表,每条路线都有一个步骤列表。
我正在使用 Solr/Sunpost 索引步骤 lat/lng 坐标做一些搜索。一段代码:
class Step < ActiveRecord::Base
belongs_to :route
searchable do
integer :route_id, :references => Route
latlon(:coordinates) { Sunspot::Util::Coordinates.new(lat, lng) }
end
end
我可以使用 Sunspot 的 order_by_geodist() 进行搜索,它工作正常:
s = Step.search do
order_by_geodist(:coordinates, lat, lng)
end
问题是:有没有办法按 route_id 对结果进行分组?换句话说,我想 return 每条路线只走一步。
已通过 "group" 选项解决
s = Step.search do
group :route_id
order_by_geodist(:coordinates, lat, lng)
end
s.group(:route_id).groups.each do |g|
logger.info g.value
logger.info g.results[0].inspect
end
我的应用程序有一个路线列表,每条路线都有一个步骤列表。 我正在使用 Solr/Sunpost 索引步骤 lat/lng 坐标做一些搜索。一段代码:
class Step < ActiveRecord::Base
belongs_to :route
searchable do
integer :route_id, :references => Route
latlon(:coordinates) { Sunspot::Util::Coordinates.new(lat, lng) }
end
end
我可以使用 Sunspot 的 order_by_geodist() 进行搜索,它工作正常:
s = Step.search do
order_by_geodist(:coordinates, lat, lng)
end
问题是:有没有办法按 route_id 对结果进行分组?换句话说,我想 return 每条路线只走一步。
已通过 "group" 选项解决
s = Step.search do
group :route_id
order_by_geodist(:coordinates, lat, lng)
end
s.group(:route_id).groups.each do |g|
logger.info g.value
logger.info g.results[0].inspect
end