다음 속성을 가진 독립형 전체 텍스트 검색 서버를 찾고 있습니다.
- 여러 클라이언트의 검색 요청을 제공 할 수있는 독립형 서버로 작동해야합니다.
- SQL 쿼리 결과를 인덱싱하여 “대량 인덱싱”을 수행 할 수 있어야합니다. “SELECT id, text_to_index FROM documents;”
- 무료 소프트웨어 여야하며 데이터베이스로 MySQL을 사용하여 Linux에서 실행해야합니다.
- 빠르다 (MySQL의 내부 전체 텍스트 검색을 배제)
내가 찾은 대안은 다음과 같은 속성입니다.
- Solr (Lucene 기반)
- ElasticSearch (Lucene 기반)
- 스핑크스
내 질문 :
- 그들은 어떻게 비교합니까?
- 대안을 놓친 적이 있습니까?
- 각 유스 케이스가 다르지만 특정 패키지를 사용하고 싶지 않은 경우가 있습니까?
답변
저는 거의 2 년 동안 Solr을 성공적으로 사용해 왔으며 스핑크스를 사용한 적이 없으므로 편견이 있습니다. 그러나 나는 문서 나 다른 사람들을 인용하여 그것을 객관적으로 유지하려고 노력할 것이다. 나는 또한 내 대답에 패치를 취할 것이다 🙂
유사점 :
- Solr과 Sphinx는 모든 요구 사항을 충족합니다. 빠르고 대량의 데이터를 효율적으로 색인화하고 검색하도록 설계되었습니다.
- 두 사이트 모두 트래픽이 많은 사이트를 사용하는 긴 목록을 가지고 있습니다 ( Solr , Sphinx )
- 둘 다 상업적인 지원을 제공합니다. ( 솔러 , 스핑크스 )
- 둘 다 여러 플랫폼 / 언어에 대한 클라이언트 API 바인딩을 제공합니다 ( Sphinx , Solr )
- 둘 다 속도와 용량을 증가시키기 위해 분배 될 수 있습니다 ( Shinx , Solr )
몇 가지 차이점이 있습니다.
- Apache 프로젝트 인 Solr은 분명히 Apache2 라이센스가 있습니다. 스핑크스는 GPLv2 입니다. 즉, 상용 응용 프로그램에 “사용”이 아닌 Sphinx를 포함하거나 확장해야하는 경우 상용 라이센스를 구입해야합니다 ( 이성 )
- Solr은 Java 응용 프로그램에 쉽게 임베드 할 수 있습니다 .
- SOLR는 이상 입증 된 기술이다 루씬의 상단에 내장되어 8 세 A의 거대한 사용자 기반 (이것은 단지 작은 부분이다). Lucene이 새로운 기능을 얻거나 속도를 높일 때마다 Solr도이를 얻습니다. Solr에 커밋하는 많은 개발자들도 Lucene 커미터입니다.
- 스핑크스는 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
). 스핑크스는 추가 구성이 없습니다.
관련 질문 :
답변
독자적인 방식으로 검색 기능을 확장해야하는 경우가 아니라면 Sphinx가 최선의 선택입니다.
스핑크스 장점 :
- 개발 및 설정이 더 빠릅니다
- 훨씬 더 나은 (그리고 더 빠른) 집계. 이것은 우리를위한 킬러 기능이었습니다.
- XML이 아닙니다. 이것이 Solr을 궁극적으로 배제한 것입니다. 우리는 Solr 집계가 부족했기 때문에 오히려 큰 결과 세트를 반환하고 (수백 개의 결과를 생각하십시오) 스스로 집계해야했습니다. XML과 직렬화하는 데 걸리는 시간은 성능을 절대적으로 떨어 뜨 렸습니다. 작은 결과 집합의 경우 완벽하게 좋습니다.
- 오픈 소스 앱에서 본 최고의 문서
Solser의 장점 :
- 확장 할 수 있습니다.
- 웹 앱에서 직접 조회 할 수 있습니다. 즉, 자동 완성 같은 검색이 AJAX를 통해 Solr 서버에 직접 도달 할 수 있습니다.
답변
참고 : 같은 질문을 가진 많은 사용자가 있습니다.
따라서 요점에 대답하십시오.
어느 이유?
-
웹앱 (예제 사이트 검색 엔진)에서 사용하려면 Solr 을 사용하십시오. API 덕분에 분명히 좋을 것입니다. 당신은 확실히 웹앱을위한 힘이 필요합니다.
-
수많은 문서 / 파일을 빠르게 검색 하려면 Sphinx를 사용하십시오 . 너무 빨리 색인을 생성합니다. 검색 결과를 얻기 위해 JSON 또는 구문 분석 XML이 포함 된 앱에서는 사용하지 않는 것이 좋습니다. 직접 dB 검색에 사용하십시오. MySQL에서 잘 작동합니다.
대안
이들은 거인이지만 훨씬 더 있습니다. 또한 이들을 사용하여 사용자 지정 프레임 워크를 강화하는 것도 있습니다. 그래서, 나는 당신이 정말로 놓친 적이 없다고 말할 것입니다. 좋은 사용자 기반을 가진 하나의 elasticsearch 가 있지만 .
답변
나는 거의 1 년 동안 스핑크스를 사용해 왔는데, 그것은 놀랍습니다. MacBook에서 약 1 분만에 150 만 개의 문서를 색인 할 수 있으며 서버에서도 더 빠르게 색인을 생성 할 수 있습니다. 또한 Sphinx를 사용하여 특정 위도 및 경도 내의 장소로 검색을 제한하고 있으며 매우 빠릅니다. 또한 결과 순위를 매기는 방법도 매우 조정 가능합니다. 튜토리얼을 읽어 보면 설치 및 설정이 쉽습니다. 거의 1.0 상태이지만 그들의 릴리스 후보는 확고합니다.
답변
Lucene / Solr은 더 많은 기능을 갖추고 있으며 비즈니스 기간이 길고 사용자 커뮤니티가 훨씬 강력합니다. imho 만약 우리가 아닌 일부 사람들이 직면 한 것처럼 초기 설정 문제를 해결할 수 있다면 Lucene / Solr이 최선의 방법이라고 말할 것입니다.