Как я могу сослаться на расстояние с помощью пространственного поиска Solr в солнечных пятнах?

Я использую Apache Solr через Sunspot on Rails со стандартным синтаксисом:

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 в хитах, но ничего не работает.


person Eric    schedule 16.10.2012    source источник


Ответы (1)


В Sunspot 2.0.0.pre.120925 вы должны включить хак на http://wiki.apache.org/solr/SpatialSearch#Returning_the_distance. Это поместит расстояние в счет, который будет выглядеть примерно так:

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
person Kyle Maxwell    schedule 16.10.2012