독립 실행형 전체 텍스트 검색 서버 선택: 스핑크스 또는 SOLR?
다음 속성을 가진 독립 실행형 전체 텍스트 검색 서버를 찾고 있습니다.
- 여러 클라이언트의 검색 요청을 처리할 수 있는 독립 실행형 서버로서 작동해야 합니다.
- SQL 쿼리 결과를 인덱싱하여 "대량 인덱스"를 수행할 수 있어야 합니다. 예를 들어 "SELECT id, text_to_index FROM documents"라고 합니다.
- 무료 소프트웨어여야 하며 MySQL을 데이터베이스로 사용하는 Linux에서 실행해야 합니다.
- 고속이어야 함(MySQL의 내부 전체 텍스트 검색 제외)
이러한 속성을 가진 다른 방법은 다음과 같습니다.
- Solr(루센 기준)
- Elastic Search(Lucene 기반)
- 스핑크스
질문:
- 그들은 어떻게 비교하나요?
- 제가 다른 대안을 놓쳤나요?
- 각각의 사용 사례는 다르지만, 특정 패키지를 사용하고 싶지 않은 경우가 있습니까?
저는 Solr를 2년 가까이 사용하고 있고, 스핑크스를 사용한 적이 없기 때문에 편견이 있는 것이 분명합니다.하지만, 저는 문서나 다른 사람들의 말을 인용해서 객관성을 유지하도록 노력하겠습니다.답변에도 패치를 적용하겠습니다:-)
유사점:
- Solr와 Sphinx는 모두 고객의 모든 요구 사항을 충족합니다.고속으로 대량의 데이터를 효율적으로 인덱싱하고 검색할 수 있도록 설계되었습니다.
- 두 사이트 모두 트래픽을 많이 사용하는 사이트 목록이 많습니다(Solr, Sphinx).
- 둘 다 상업적 지원을 제공합니다.(솔러, 스핑크스)
- 둘 다 여러 플랫폼/언어(Sphinx, Solr)에 대한 클라이언트 API 바인딩을 제공합니다.
- 둘 다 분산하여 속도와 용량을 높일 수 있습니다(Sphinx, Solr).
다음은 몇 가지 차이점입니다.
- Solr는 Apache 프로젝트이기 때문에 Apache2 라이선스를 받은 것이 분명합니다.스핑크스는 GPLv2입니다즉, 상용 어플리케이션에 스핑크스를 포함하거나 확장해야 하는 경우('사용'뿐만 아니라) 상용 라이선스를 구입해야 합니다(합리적).
- Solr은 Java 응용 프로그램에 쉽게 내장할 수 있습니다.
- Solr은 8년 이상 된 검증된 기술인 Lucene을 기반으로 구축되었으며, 이는 매우 작은 부분에 불과합니다.Lucene이 새로운 기능이나 속도를 높일 때마다 Solr도 이 기능을 사용합니다.Solr에게 헌신하는 많은 개발자들 또한 루센의 헌신자들이다.
- 스핑크스는 RDBMS, 특히 MySQL과 더욱 긴밀하게 통합됩니다.
- Solr을 Hadoop과 통합하여 분산 애플리케이션 구축 가능
- Solr는 Nutch와 통합되어 크롤러를 갖춘 본격적인 웹 검색 엔진을 신속하게 구축할 수 있습니다.
- Solr는 Microsoft Word, PDF 등의 독자적인 포맷을 색인화할 수 있습니다.스핑크스는 못해
- Solr은 개봉 후 맞춤법 검사기와 함께 제공됩니다.
- Solr에는 개봉 즉시 패싯 서포트가 포함되어 있습니다.스핑크스에서 패싯을 하려면 더 많은 작업이 필요합니다.
- 스핑크스는 필드 데이터에 대한 부분 인덱스 업데이트를 허용하지 않습니다.
- Sphinx에서 모든 문서 ID는 0이 아닌 고유한 부호 없는 정수여야 합니다.Solr에는 많은 작업에 고유한 키가 필요하지 않으며, 고유한 키는 정수 또는 문자열일 수 있습니다.
- Solr은 유사한 결과가 중복되지 않도록 필드 축소를 지원합니다(현재는 추가 패치로만 사용).스핑크스는 이런 기능을 제공하지 않는 것 같습니다.
- Sphinx는 문서 ID만 가져오도록 설계되어 있지만 Solr에서는 거의 모든 종류의 데이터를 사용하여 문서 전체를 직접 가져올 수 있으므로 외부 데이터 저장소로부터 더 독립적이고 왕복 비용을 절약할 수 있습니다.
- Solr는 임베디드 기기를 사용하는 경우를 제외하고 Tomcat이나 Jetty와 같은 Java 웹 컨테이너에서 실행됩니다.이 컨테이너에는 추가 설정 및 튜닝이 필요합니다(또는 포함된 Jetty를 사용하여 다음 명령을 사용하여 실행할 수 있습니다).
java -jar start.jar
에는 추가 .) 스핑크스
관련 질문:
독자적인 방법으로 검색 기능을 확장할 필요가 없는 한, 스핑크스를 추천합니다.
스핑크스의 장점:
- 개발 및 셋업 시간 단축
- 보다 뛰어난(및 고속) 집약.이게 저희의 킬러 특징이에요.
- XML이 아니라 궁극적으로 Solr을 배제하는 거죠Solr 어그리게이션이 부족했기 때문에 비교적 큰 결과 세트(수백 개의 결과라고 생각)를 반환하고 직접 집계해야 했습니다.XML과의 시리얼화 및 XML과의 시리얼화 시간은 퍼포먼스를 완전히 저하시킵니다.하지만 작은 결과 세트라면 완벽하게 괜찮았습니다.
- 오픈 소스 앱에서 본 최고의 문서
솔루션의 이점:
- 확장할 수 있습니다.
- 웹 앱에서 직접 검색할 수 있습니다. 즉, 자동 완성형 검색을 AJAX를 통해 Solr 서버에 직접 입력할 수 있습니다.
주의: 동일한 질문을 염두에 둔 사용자가 많습니다.
요점에 대한 답변:
어떤 이유?
웹 앱(예시 사이트 검색 엔진)에서 Solr을 사용하려면 Solr을 사용하십시오.API 덕분에 분명 멋질 거예요.웹 어플리케이션에는 반드시 그 파워가 필요합니다.
수많은 문서/파일을 빠르게 검색하려면 스핑크스를 사용하십시오.인덱스도 굉장히 빨라요.검색 결과를 얻기 위해 JSON이나 XML 파싱과 관련된 앱에서는 사용하지 않는 것이 좋습니다.직접 dB 검색에 사용합니다.MySQL에서 잘 작동합니다.
대체 수단
비록 그들이 거인이지만, 더 많은 것들이 있다.또, 커스텀 프레임워크에 이러한 기능을 사용하는 기업도 있습니다.그래서, 정말 하나도 놓치지 않으셨군요.단, 뛰어난 사용자 기반을 가진 Elastic Search가 하나 있습니다.
스핑크스를 사용한 지 1년이 다 되어 가는데, 정말 대단했어요.MacBook에서는 약 1분 만에 150만 개의 문서를 인덱싱할 수 있으며 서버에서는 훨씬 더 빠르게 인덱싱할 수 있습니다.또, 특정의 위도나 경도내의 장소로의 검색을 제한하기 위해서 스핑크스를 사용하고 있습니다만, 매우 빠릅니다.또한, 결과가 어떻게 순위가 매겨지는지는지는 매우 조정가능합니다.튜토리얼을 한두 개 읽으면 설치와 셋업이 간단합니다.거의 1.0의 지위에 있지만, 릴리스 후보는 매우 견고합니다.
Lucene/Solr은 더 많은 기능을 갖추고 있으며, 오랜 기간 비즈니스를 수행하며 사용자 커뮤니티가 더욱 강화되어 있는 것으로 보입니다.(우리가 아닌) 몇몇이 직면한 것처럼 초기 셋업 문제를 극복할 수 있다면 Lucene/Solr이 최선의 선택이라고 생각합니다.
언급URL : https://stackoverflow.com/questions/1284083/choosing-a-stand-alone-full-text-search-server-sphinx-or-solr
'source' 카테고리의 다른 글
Eclipse/Java 코드 완료가 작동하지 않음 (0) | 2022.11.16 |
---|---|
Python 테스트 없음 (0) | 2022.11.16 |
로컬 phpMyAdmin 클라이언트를 사용하여 원격 서버에 액세스하는 방법 (0) | 2022.11.16 |
C#의 null-coalesing 연산자와 동등한 Python이 있습니까? (0) | 2022.11.16 |
Swing GUI에 공백 공간 제공 (0) | 2022.11.16 |