나는 Heroku에서 호스팅 될 Rails 앱을 계획 중이며 지형 공간 및 전체 텍스트 검색 기능이 모두 필요합니다.Heroku에서 호스팅되는 레일스 앱에 대한 지형 공간 검색 및 전체 텍스트 검색
나는 Heroku가 WebSolr 및 IndexTank과 같은 애드온을 제공한다는 것을 알고 있지만 그들이 할 수있는 것처럼 들리지만, 추가 기능을 지불하지 않고도 MySQL 및/또는 PostgreSQL에서 수행 할 수 있는지 궁금합니다.
나는 Heroku에서 호스팅 될 Rails 앱을 계획 중이며 지형 공간 및 전체 텍스트 검색 기능이 모두 필요합니다.Heroku에서 호스팅되는 레일스 앱에 대한 지형 공간 검색 및 전체 텍스트 검색
나는 Heroku가 WebSolr 및 IndexTank과 같은 애드온을 제공한다는 것을 알고 있지만 그들이 할 수있는 것처럼 들리지만, 추가 기능을 지불하지 않고도 MySQL 및/또는 PostgreSQL에서 수행 할 수 있는지 궁금합니다.
나는 스핑크스 (sphinx), 즉 heroku에 전개 가능한 전체 텍스트 검색 엔진을 사용할 것입니다.
그것에는 지리적 검색 내장 : http://freelancing-god.github.com/ts/en/geosearching.html
편집 :
스핑크스는 Heroku가 거의 준비가되어 여기를 참조 :
http://flying-sphinx.com/은 당신이 할 수 있어야 응용 프로그램의 규모에 따라 FULLTEXT 및 SPATIAL 인덱스를 MySQL에서 쉽게 수행 할 수 있습니다. 응용 프로그램의 처리 속도가 빨라지면 (즉, 동시 실행 속도가 빨라지고 초당 수천 개의 요청이 수억 개가되는 경우) FULLTEXT 또는 SPATIAL 쿼리를 위해 다른 솔루션으로 이동해야 할 수 있습니다. 그러나 초기에 최적화하는 것을 권장하지 않습니다. 제대로 수행하기가 어려울 수 있기 때문입니다. 가까운 미래에 MySQL은 충분할 것입니다.
MySQL here에서 공간 인덱스에 대해 읽을 수 있습니다. MySQL here에서 전체 텍스트 색인을 읽을 수 있습니다. 마지막으로, here에 설명 된 단계를 수행하여 schema.rb 파일과 레이크 작업을이 두 가지 인덱스 유형과 함께 사용하는 것이 좋습니다.
나는 둘 다 MySQL을 사용했지만, PostgreSQL은 훌륭한 지리 공간적 인덱스 솔루션을 가지고 있다고 생각합니다.
+1 ActiveRecord에 mysql 공간 지원을 추가하기위한 좋은 보석을 알고 계십니까? –
저는 rgeo (https://github.com/dazuma/rgeo)를 정말 좋아하며 전에 geokit과 GeoRuby를 조합하여 사용했습니다. –
데이터베이스가 Heroku 인 경우 전체 텍스트 검색 : http://www.postgresql.org/docs/8.3/static/textsearch.html에 대한 Postgres의 지원을 사용할 수 있습니다. Heroku가 실행하는 가장 오래된 서버 (공유 데이터베이스 용)는 8.3과 8.4에 있습니다. 최신 버전은 9.0입니다.
이 작은 사실을 알아 차리지 블로그 포스트는 여기에서 볼 수있다 : https://tenderlovemaking.com/2009/10/17/full-text-search-on-heroku.html
분명히, "texticle"(ㅎ 귀엽다..) 부가 기능은 꽤 잘 ... 작동합니다. 내가 아는 바로는 당신에게 맞는 색인을 만들 수도 있습니다.
Postgres 전체 텍스트 검색은 Solr 또는 IndexTank의 벨과 휘슬을 제공하지는 않지만 Rails 통합이 좋지 않을 수도 있지만 매우 빠르고 소란스럽지 않습니다. GIN 및/또는 GiST 색인을 올바르게 설정하는 방법을 읽고 tsvector/tsquery 유형을 사용하십시오.
짧은 버전 : CREATE INDEX pgweb_idx ON pgweb USING gin(to_tsvector('english', body));
:
SELECT * FROM ... WHERE to_tsvector('english', pgweb.body) @@ to_tsquery('hello & world') LIMIT 30
, 이전에 인용 된 블로그 게시물 그렇게하려고 :
@@
연산자를 사용합니다. 전용 데이터베이스는 PostGIS를 통해 징발 될 수 있습니다. PostGIS는 지리적 데이터 색인 및 쿼리를위한 매우 강력하고 완벽한 기능을 갖춘 시스템입니다. OpenStreetMap은 PostgreSQL 지오메트리 유형 (내장)을 광범위하게 사용하며, 많은 사람들이이를 PostGIS와 결합하여 큰 효과를냅니다.
이 두 가지 (전체 텍스트 검색, PostGIS)는 Postgres의 확장 가능한 데이터 유형 및 색인 인프라를 활용하므로 많은 레코드에 대해 높은 성능을 발휘할 것으로 기대해야합니다. 상황이 파열 된 경우 상황). 트랜잭션 및 구조화 된 데이터와 함께 이러한 기능을 활용할 수 있다는 사실을 활용할 수도 있습니다. 예 :
CREATE TABLE products (pk bigserial, price numeric, quantity integer, description text);
은 전체 텍스트 검색과 마찬가지로 쉽게 사용할 수 있습니다. 모든 텍스트 필드가 수행하며 일반 특성 (이 경우 가격, 수량)과 관련 될 수 있습니다.
IndexTank는 현재 Heroku에서 최대 100,000 개의 문서까지 무료이며 문서를 업데이트하지 않았습니다. 이것은 당신의 요구에 충분하지 않을 수도 있습니다,하지만 나는 당신을 위해 알려주 리라고 생각했습니다.
Postgre를 통한 전체 텍스트 검색을 위해 pg_search을 권하고 싶습니다. 지금 바로 나에게 영웅을 사용하고 있습니다. 나는 texticle을 사용하지 않았지만 최근에 pg_search가 더 많은 개발 활동을하고 있으며 텍스쳐를 기반으로 작성되었습니다 (인덱스를 추가하지 않을 것이므로 직접 작성해야합니다).
지금 스레드를 찾을 수 없지만 Heroku가 pg geo 검색을위한 옵션을 제공했지만 베타 버전으로 제공되는 것을 보았습니다.
내 조언은 postgre 솔루션을 (EC2 인스턴스에서) SOLR 인스턴스를 호스팅하고 sunspot solr gem을 사용하여 레일과 통합하는 것입니다.
나는 내 솔루션을 구현했으며 WebSolr도 사용했습니다. 기본적으로 SOLR 인스턴스를 무료로 제공합니다. 제 의견으로는 그럴 가치가 있습니다. 태양 흑점 solr 클라이언트를 사용하는 통합을 위해, SOLR을 호스트하기 위해 누군가 20 $/40 $/...을 지불 할 것입니다. 나는 또한 당신이 백업, 정비 등을 얻는다는 것을 알고있다. 그러나 나에게 자기 자신의 인스턴스를 더 싼 단다라고 부른다. 또한 WebSolr은 1.4.x 버전의 SOLR에서 잠겨 있습니다.
이 Google 그룹 소식 (구식 일 가능성이 있음)에 따르면 Sphinx는 Heroku에서 지원하지 않습니다. https://groups.google.com/forum/#!topic/thinking-sphinx/aWBIf7qhcN8 –
은 방금 내 답변을 편집 했으므로 답. 질문을 더 잘 볼 수 있도록 내 대답을 삭제하는 것을 선호하는지 알려주십시오. – apneadiving
+1 스핑크스가 현재 사용 가능합니다. 선택의 나의 해결책이 될 것입니다. – standup75