2012-01-21 2 views
1

Rails 3.1 앱에서 텍스트 및 지형 공간 검색을 위해 Solr을 활용하려고합니다. 나는 websolr 지리 공간적으로 색인을 붙이는 & 수색을 지원한다 그러나 그것을위한 2 개의 주옥 (sunspotrsolr)는 그것을 (지금) 구현하지 않는 것을 본다. Sunspot은 기능을 추가하는 과정에있는 것처럼 보이지만 "[지형 공간]은 실험적이며 출시되지 않은 상태입니다 .DSL이 변경 될 수 있습니다."Rails 3.x에서 Solr (websolr)을 사용한 지형 공간 검색

sunspot + websolr을 사용하여 지형 공간 검색을 구현 ​​한 다른 방법이 있습니까? 나는 약간의 googing을 해왔고 일부러 보았지만 hackish처럼 보였고, 이미 핵심 기능이 구워 지거나 좀 더 지원 된 접근법이 있다면 내가 찾은 것을 사용하지 않을 것이다.

+0

자신 만의 상자를 운영하는 경우 http://www.elasticsearch.org/ 대신 ElasticSearch를 살펴보십시오. 솔라보다 설치가 쉽고 스키마가 없으며 문서 지향적이며 시간이 갈수록 샤딩을 지원합니다. Lucene을 기반으로 (solr와 마찬가지로) 타이어 젬을 레일로 사용할 수 있습니다. – ADAM

+0

@ADAM 이것은 지금 heroku 배포 프로젝트가 될 것입니다. 또한 타이어가 지형 공간 검색을 지원하지 않는 것처럼 보입니까? 정보 주셔서 감사합니다, 우리는 나중에 전용 환경으로 확장 할 수 있습니다! – Chance

+0

좋아, 그럴 수도 있다고 생각해서 코멘트로 올렸습니다. ElasticSearch는 지형 공간으로 움직이며 두 지점 + 지오 펜싱 및 패싯이 있습니다. 솔라 기반 솔루션보다 통합하는 것이 훨씬 낫다는 것을 알게되었습니다. – ADAM

답변

7

Sunspot은 지리적 공간 검색을 지원하지만 일부 제한 사항이 있습니다.

색인 :

searchable do 
    text :location 
    location :coordinates do 
    Sunspot::Util::Coordinates.new latitude, longitude 
    end 
end 

검색 :

coord = # whatever... 
with(:coordinates).near(coord[0], coord[1], :precision => 3) 

하지만 ... 정말 정확한 아니라 내가 잘못 아니에요 경우가 지리적 해시를 사용하고. 따라서 2 점이 서로 가깝지만 발견되지 않을 수도 있습니다.
또한 near을 패싯에 중첩시킬 수 없습니다.

나는 ADAM의 조언을 따르고 탄력적 인 검색을 할 것입니다. 그게 내가 한 짓이야. 당신은 훨씬 더 많은 통제권을 얻습니다.

타이어는 지형 공간 검색도 지원하지만 필요하지 않기 때문에 DSL에 구체적인 방법이 없습니다. 그들은 나중에 생각을 추가 할 계획입니다.

색인 :

tire.mapping do 
    indexes :location, type: 'string', analyzer: 'snowball' 
    indexes :latitude_longitude, type: 'geo_point' 
end 

def latitude_longitude 
    [latitude, longitude].join(",") 
end 

def to_indexed_json 
    to_json(methods: ['latitude_longitude']) 
end 

검색 : 후세를 들어

filter :geo_distance, distance: "#{distance}km", latitude_longitude: [user.latitude, user.longitude].join(",") 
+0

그런데 고맙습니다. 나는 EC2 (최신 버전과 기사와의 비 호환성)에 설치하는 데 몇 가지 문제점을 겪었지만 이후에는 꽤 부드러웠다. : D – Chance

+0

묻지 않아도된다면, 지오 코딩에 무엇을 사용하고 있습니까? – Chance

+2

Gmaps4rails를 사용하고 있습니다. 왜냐하면지도를 표시하는 데 사용하기 때문에 Geocoder를 사용하기도했습니다. – Robin

2

: 태양 흑점 이후, SOLR 3 공간 검색을 지원하는 버전 1.3.0을 발표 그에게 Heroku에 완벽하게 실행 가능한 옵션으로하고있다 웹 솔라.

+0

이렇게하면 인덱스 유형을 올바르게 설정해야합니다. [here] (http://stackoverflow.com/a/21666490/21115)를 참조하십시오. – dukedave

관련 문제