2

我使用标准语法通过 Sunspot on Rails 使用 Apache Solr:

class Post < ActiveRecord::Base
  searchable do
    # ...
    latlon(:location) { Sunspot::Util::Coordinates.new(lat, lon) }
  end
end

通过搜索:

Post.search do
  order_by_geodist(:location, 32, -68)
end

如何获取命中中搜索位置的距离?我已经尝试了一百万种不同的语法选项来返回命中中的 geodist,但似乎没有任何效果。

4

1 回答 1

2

在 Sunspot 2.0.0.pre.120925 中,您必须在http://wiki.apache.org/solr/SpatialSearch#Returning_the_distance中加入 hack 。这会将距离计入分数,如下所示:

results = Post.search do
  fulltext "{!func}geodist(location_ll, 32, -68)"
  order_by(:score, :asc)
end

post = results.hits.first.result
distance = results.hits.first.score
于 2012-10-16T21:41:19.053 回答