2013-10-28 70 views
1

我有一個應用程序使用Geocoder查找用戶附近的供應商。我目前在另一個模型中使用ElasticSearch,但我想將其擴展到我的供應商模型。唯一的問題是,我不希望用戶通過所有供應商進行搜索,只有那些距離他們不到的距離。是這樣的可能嗎?我瀏覽了一些彈性搜索文檔,還沒有發現任何東西。這是我的供應商型號和我的設計用戶型號:使用地理編碼位置的Rails範圍彈性搜索

class Vendor < ActiveRecord::Base 


    geocoded_by :address 
    after_validation :geocode, 
     :if => lambda{ |obj| obj.address_changed? } 
end 

class User < ActiveRecord::Base 

    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    validates :zip, presence: true 

    geocoded_by :zip 

    after_validation :geocode 

end 

對此有何看法?打開任何建議,因爲我不確定如何做到這一點。提前致謝!

回答

2

我想你會索引供應商文件在您的elasticsearch索引。如果沒有,那麼你需要這樣做,並存儲位置座標。

從你的問題,我明白你要搜索用戶附近位置的所有供應商。如果是這種情況,那麼您可以在elasticsearch中使用地理位置查詢。

您可以使用一個或任何編號。座標(lat和long)以及搜索查詢中的x距離。以下是一些有用的鏈接,可以幫助你的:

http://www.elasticsearch.org/blog/geo-location-and-search/ http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-geo-distance-filter.html

+0

啊是的,這就是我一直在尋找。謝謝! – settheline