2013-10-28 2 views
1

지오 코더를 사용하여 사용자 근접 지역의 공급 업체를 찾는 앱이 있습니다. 현재 다른 모델에서 ElasticSearch를 사용하고 있지만이를 내 공급 업체 모델로 확장하고 싶습니다. 유일한 것은 사용자가 모든 공급 업체를 통해 검색하고 x 거리 내에있는 사용자 만 검색하는 것을 원하지 않는다는 것입니다. 이게 가능한가? 신축성있는 검색 문서를 살펴본 결과 아무것도 발견하지 못했습니다. 여기 내 공급 업체 모델과 나의 장치 사용자 모델입니다 :지오 코딩 된 위치를 사용하여 elasticsearch를 범위 지정하는 레일

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에서 사용할 수있는 위치 정보 쿼리가 있습니다.

하나 또는 아니오를 사용할 수 있습니다. (위도 및 경도)와 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