문제

Ruby on Rails 애플리케이션에서 데이터의 전체 텍스트 검색을 수행하고 싶습니다.어떤 옵션이 있습니까?

도움이 되었습니까?

해결책

여러 가지 옵션을 사용할 수 있으며 각 옵션에는 서로 다른 강점과 약점이 있습니다.전체 텍스트 검색을 추가하려면 각 항목을 조금씩 조사하고 시도해 보고 해당 기능이 귀하의 환경에서 얼마나 잘 작동하는지 확인하는 것이 좋습니다.

MySQL에는 전체 텍스트 검색 기능이 내장되어 있습니다.새로운 레코드가 데이터베이스에 추가되면 자동으로 색인이 생성되어 검색 결과에서 사용할 수 있다는 것을 의미하는 온라인 지원이 있습니다.그만큼 선적 서류 비치 자세한 내용이 있습니다.

acts_as_tsearch 최신 버전의 유사한 내장 기능에 대한 래퍼를 제공합니다. 포스트그레SQL

다른 데이터베이스의 경우 다른 소프트웨어를 사용해야 합니다.

루씬 Java로 작성된 인기 있는 검색 공급자입니다.검색 서버를 통해 Lucene을 사용할 수 있습니다. 솔르 Rails를 사용하여 acts_as_solr.

Java를 사용하고 싶지 않다면 Lucene에서 Ruby로의 포트가 있습니다. 가는 리본.Rails에 대한 지원은 다음을 사용하여 추가됩니다. acts_as_ferret 플러그인.

사피안 또 다른 좋은 옵션이며 Rails에서 다음을 사용하여 지원됩니다. acts_as_xapian 플러그인.

마지막으로 제가 선호하는 선택은 스핑크스 사용하여 울트라스핑크스 플러그인.매우 빠르며 데이터베이스를 색인화하고 검색하는 방법에 대한 다양한 옵션이 있지만 더 이상 적극적으로 유지 관리되지 않습니다.

Sphinx의 또 다른 플러그인은 다음과 같습니다. 생각하는 스핑크스 긍정적인 부분이 많은 것 피드백.Ultrasphinx보다 Thinking Sphinx를 사용하여 시작하는 것이 조금 더 쉽습니다.귀하의 프로젝트에 더 적합한 플러그인을 결정하기 위해 두 플러그인을 모두 조사하는 것이 좋습니다.

다른 팁

스핑크스를 추천할 수 있어요.라이언 베이츠는 대단해 스크린캐스트 Thinking Sphinx 플러그인을 사용하여 전체 텍스트 검색 솔루션을 만드는 방법에 대해 알아보세요.

Ferret(Ruby로 작성된 Lucene)을 사용할 수 있습니다.act_as_ferret 믹스인을 사용하여 Rails와 원활하게 통합됩니다.보세요 "Ferret을 레일과 통합하는 방법".대안은 스핑크스.

나는 이 다른 질문에 있는 다양한 Ruby on Rails 검색 옵션 목록.질문을 어떻게 결합해야 할지, 아니면 결합해야 할지 잘 모르겠습니다.

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

나중에 참고할 수 있도록 참고하세요.Ultra Sphinx는 더 이상 유지 관리되지 않습니다.스핑크스가 그 대체품이라고 생각합니다.Ultra sphinx의 발췌 기능과 같이 현재로서는 몇 가지 기능이 부족하지만 다른 기능으로 이를 보완합니다.

직장에서 Scrumpad 프로젝트에 사용하고 있으므로 act_as_ferret을 추천합니다.인덱싱은 다시 인덱싱하는 동안에도 애플리케이션을 계속 사용할 수 있도록 보장하는 별도의 프로세스로 수행될 수 있습니다.이를 통해 웹사이트의 다운타임을 줄일 수 있습니다.또한 검색 속도가 훨씬 빨라졌습니다.한 번에 여러 모델을 검색하고 원하는 필드별로 결과를 정렬할 수 있습니다.

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