문제

Ruby on Rails 애플리케이션에 검색 엔진을 구축하기 위한 여러 플러그인 옵션이 있습니다.이 중 가장 좋은 것은 무엇입니까?

도움이 되었습니까?

해결책

Thinking Sphinx에는 어떤 필드와 어떤 모델이 인덱싱되는지 정의하는 보다 간결한 구문이 있습니다.

UltraSphinx와 Thinking Sphinx(최근) 모두 개체의 지리적 근접성을 고려하는 매우 멋진 기능을 갖추고 있습니다.

UltraSphinx는 모델을 로드하는 방법에 성가신 문제가 있습니다(전체 Rails 스택을 로드하지 않으므로 이상하고 진단하기 어려울 수 있으며 명시적인 추가를 통해 처리됨). require 진술).

우리는 새 프로젝트에 Thinking Sphinx를 사용하고 지리 콘텐츠를 사용하는 프로젝트에 UltraSphinx를 사용합니다.

다른 팁

이 질문은 이전에 요청되었습니다. 여기 더 자세한 답변과 함께.

내 친구 중 한 명이 사용한 확실한 옵션은 다음과 같습니다. 솔르, 원래 Java 기반 Lucene을 사용하는 검색 엔진입니다.Rails와 함께 사용하려면 물론 act_as 플러그인이 있습니다. act_as_solr.

그는 최근에 콤보를 발표했습니다. 몬트리올 온 레일스 그리고 다음에 대한 훌륭하고 철저한 개요를 제공합니다. 그의 블로그에서 act_as_solr을 사용하는 방법.

프랑스어 악센트도 매우 잘 지원하는 것 같습니다.

저는 지금 바로 이 과정을 거치고 있기 때문에 실제 경험은 없지만 모든 옵션을 조사하는 데 많은 시간을 보냈습니다.지금까지 내가 배운 내용은 다음과 같습니다.

  • *Sphinx - 속도와 기능성 면에서 좋은 평판을 얻었지만 Sphinx에는 정수 키가 필요하고 내 모델은 GUID를 사용합니다.ThinkingSphinx는 최근 GeoSpatial 지원을 발표했습니다.
  • Acts_As_Solr - 대용량 사이트를 운영하는 친구가 추천합니다.원래 제작자는 작업을 중단했으며 문서를 찾기가 어렵습니다.Java 서블릿이 필요합니다
  • Acts_As_Ferret - 사용하기 쉬워 보이지만 불안정하다고 비난하는 사람들이 많습니다.
  • 제한된 정보를 가진 다른 두 가지는 Acts_As_Indexed 및 Acts_As_Searchable입니다.

나는 그들 모두의 장점과 단점을 문서화하려는 스프레드시트를 가지고 있습니다.누구든지 이 내용을 보거나 수정하는 데 관심이 있으면 저에게 연락하세요.정확한 내용이 확인되면 어딘가에 게시하겠습니다.

일반적인 기본 키가 있는 경우 UltraSphinx 또는 Thinking Sphinx를 사용해 보는 것이 좋습니다.나는 좋은 문서, 기능 세트 및 프로젝트가 얼마나 활발한지를 기반으로 Acts_As_Xapian을 시도해 볼 것입니다.

저는 클라이언트 프로젝트에서 Ferret/acts_as_ferret 콤보(레거시 결정)만 사용했습니다.꼭 보시길 추천드립니다 다른 옵션 먼저.

aaf는 매우 취약하며 구성에 실수가 있거나 어떤 이유로 aaf에서 버그가 발생하는 경우 Rails 앱이 갑자기 중단될 수 있습니다.

이러한 경우 단순히 검색 기능이 중단되는 것이 아니라 인덱스 모델을 터치하는 모든 컨트롤러 작업이 완전히 실패하고 예외가 발생합니다.뭐야, 흠 알겠어?

나는 act_as_xapian 플러그인.나는 이 튜토리얼을 따랐다:

http://locomotivation.com/2008/07/23/simple-ruby-on-rails-full-text-search-using-xapian

아주 잘 작동합니다.

나는 act_as_ferret을 사용하고 있습니다.구성이 쉽고 일반적으로 빠릅니다.내장된 활성 레코드 찾기 기능은 매우 유용합니다.검색에서 일치하는 기록을 찾은 후 조건을 적용하거나 다른 모델에 가입할 수 있습니다.

스핑크스와 달리 새 데이터를 추가할 때 모든 레코드를 다시 색인화할 필요가 없습니다.흰 족제비 DB에 새 기록을 삽입하는 after_save 및 after_update 후크가 있습니다.이것은 나에게 큰 판매 포인트 중 하나였습니다.

데이터를 대량 인덱싱해야 하는 경우 Ferret은 act_as_sphinx보다 확실히 느립니다(3배).나는 결국 스핑크스만큼 빠르게 작동하는 모델을 다시 색인화하는 나만의 방법을 작성하게 되었습니다. 이는 기본적으로 새 색인을 생성하기 위해 레코드 단위로 이동하는 대신 DB에서 모든 데이터를 미리 로드합니다.

흰 족제비 문서는 기본 사항에는 좋지만 더 복잡한 검색, 정렬 및 dRb 서버를 사용하여 원격 인덱스를 호스팅하면 약간 부족합니다.즉, 비록 스핑크스에 대한 경험이 제한되어 있지만 act_as_sphinx보다 훨씬 더 성숙한 제품처럼 느껴집니다.

나와 같은 공유 호스팅 서비스(Bluehost)를 사용하는 경우 제공업체가 제공하는 옵션으로 옵션이 제한될 수 있습니다.내 경우에는 Lucene이나 Solr와 같은 별도의 서버를 시작하고 실행을 유지하는 훌륭하고 안정적인 방법을 찾을 수 없었습니다.

그래서 Xapian을 선택했는데 제게는 잘 맞았습니다.제가 조사한 레일용 플러그인은 2개입니다:act_as_xapian 및 xapian_fu.첫 번째 방법을 사용하면 빠르게 진행되지만 더 이상 유지 관리되지 않는 것 같습니다.저는 방금 xapian_fu 작업을 시작했습니다.

여전히 관심이 있는 분이 계시다면 지금 사용할 수 있는 최신 방법은 다음과 같습니다. 탄성 검색.다음과 같은 보석이 있습니다. 타이어 또는 탄성 검색 레일.또한 Solr, Java 기반과 마찬가지로 Lucene 기반입니다.Solr는 실제로 이 프로젝트와 통합되었습니다...

저는 Thinking Sphinx를 사용해 보았는데 꽤 괜찮아 보이지만 모든 옵션을 평가할 시간이 없었습니다.

생각하는 스핑크스를 추천합니다.내 생각에는 이것이 가장 빠른 선택이다.

나는 Ferret을 사용했고 그것은 내 목적에 잘 맞았지만 다른 옵션은 평가하지 않았습니다.

내가 시도하지 않은 옵션은 C++ 기반입니다. 사피안

우리는 사용하고 있습니다 http://hyperestraier.sourceforge.net/, 상속되었습니다.다른 엔진은 살펴보지 않았지만 Hyperestraier는 필요한 모든 후크를 제공합니다.하지만 검색 색인 설정은 복잡합니다.아마도 더 쉬운 옵션을 사용할 수 있을 것입니다.

사용중인 데이터베이스에 따라 다릅니다.퍼지 검색을 위한 좋은 옵션을 많이 제공하고 훌륭한 쿼리 파서를 제공하는 Solr를 사용하는 것이 좋습니다.단점은 별도의 프로세스를 실행해야 한다는 것입니다.Ferret도 사용해 봤지만 인덱스에 대한 멀티스레드 액세스 측면에서 안정성이 떨어지는 것으로 나타났습니다.Sphinx는 MySQL과 Postgres에서만 작동하기 때문에 사용해 보지 않았습니다.

나는 놀랍도록 잘 작동하는 다른 옵션을 사용하고 있습니다.나는 jruby를 사용하고 lucene과 직접 대화하고 있습니다.

과거에 act_as_solr을 사용했는데 몇 가지 문제가 발생했습니다.주로 각 AR 저장에 대해 동기식 호출을 수행합니다.이것은 그다지 나쁘지는 않지만 내 상황에서는 저장으로 인해 solr에 대한 많은 동기 호출이 발생하고 때때로 잡종이 허용하는 것보다 오래 걸리고 잡종 시간 초과 예외(또는 이와 유사한 것)가 발생합니다.

Thinking Sphinx는 버려진 것처럼 보이는 Ultrasphinx보다 더 나은 대안이지만 일반적으로 Xapian은 Sphinx보다 더 강력한 엔진을 가지고 있으며 실시간 검색 구현이 더 쉽습니다.

act_as_ferret을 추천합니다.그러나 어려운 부분은 서버에서 성공적으로 실행하는 것이지만 일단 완료되면 Ferret 서버는 새로운 업데이트가 있을 때마다 인덱스를 업데이트하기 위해 별도의 백그라운드 프로세스로 실행되므로 문제가 거의 없습니다.또한 우리를 위해 아파치와 함께 잡종에서 잘 작동합니다.

나 또한 완벽한 솔루션을 찾고 있었습니다.처음에는 Thinking Sphinx를 선택했는데 잘 작동했습니다.하지만 웹앱을 호스팅하려고 했기 때문에 헤로쿠, 유일한 옵션은 다음을 사용하는 것입니다. 솔르.그러나 가장 큰 단점은 주요 개발이 부족하다는 것입니다. act_as_solr gem은 2008년 5월 이후에 중단된 것 같습니다.그래서 내 취향에는 너무 오래됐어요.방금 찾았어요 흑점 고급 대안으로 최근 업데이트가 포함되어 있으므로 이를 고려해 보겠습니다.

Heroku가 제공하는 또 다른 옵션은 Solr 기반의 호스팅 인덱스 서버를 선택하는 것입니다. 웹솔러.필수 보석 websolr-acts_as_solr 운 좋게도 매우 최신입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top