2010-05-18 3 views
18

Solr 1.4 (out-of-the-box 파셋 검색, 그룹화, 복제, http 관리 vs. 루크)를 사용하는 데는 몇 가지 장점이 있습니다.Solr보다 Apache Lucene을 선호하는 상황이 있습니까?

Java 응용 프로그램에 검색 기능을 포함하더라도 Solstice를 사용할 때 SolrJ을 사용하여 HTTP 트레이드 오프를 피할 수 있습니다. SolrJ는 전혀 추천하지 않습니까?

그래서 언제 "pure-Lucene"을 사용 하시겠습니까? 더 나은 성능을 제공합니까? 아니면 적은 RAM을 필요로합니까? 단위 테스트가 가능한가요?

추 신 : this question에 대해 알고 있습니다.

+1

여기에 다른 '비교'http://www.lucenetutorial.com/lucene-vs-solr.html 및 http://www.lucidimagination.com/solutions/software/choosing-lucene-solr – Karussell

+0

다른 모습 있습니다. http://www.findbestopensource.com/article-detail/lucene-vs-solr – Karussell

답변

4

응용 프로그램 내에 검색 기능을 완벽하게 포함시키고 Solr과 같은 별도의 프로세스를 유지하지 않으려면 Lucene을 사용하는 것이 좋습니다. 예를 들어, 데스크탑 애플리케이션은 Lucene을 사용하여 Eclipse 문서를 검색하는 Eclipse IDE와 같은 일부 검색 기능이 필요할 수 있습니다. 아마 이런 종류의 응용 프로그램이 Solr과 같은 무거운 프로세스를 시작하는 것을 원하지 않을 것입니다.

+0

무거운 무엇을 의미합니까? CPU/RAM 또는 유지 물건의 관점에서? – Karussell

+0

물리적 인 자원 측면에서 그렇습니다. 데스크톱 응용 프로그램에서 아마도 용납 될 수없는 Solr의 시작 시간이 있습니다. –

+1

하지만 EmbeddedSolrServer를 실험 해 본 적이 없습니다. Solr을 내장하는 것은 흥미로운 방법 일 수 있습니다. –

6

웹 응용 프로그램이있는 경우 Solr을 사용하십시오. 두 가지를 통합하려고 시도했지만 Solr이 더 쉽습니다. 그렇지 않으면 Solr의 기능 (가장 중요한 것으로 간주되는 기능은면 처리 된 검색 임)이 필요하지 않은 경우 Lucene을 사용하십시오.

+0

SolrJ 또는 HTTP 접근 방식을 사용 했습니까? 나는 webapp에 lucene을 포함 시키려고 시도했는데 아주 쉬웠다. – Karussell

+0

Solrj를 사용 했으므로 응용 프로그램 내에서 HTTP 요청을 할 필요가 없었습니다. 솔직히, 나는 어려움을 겪은 것을 기억하지 못한다. 어쩌면 어딘가에서 무언가를하고 있었을 것이다. –

+0

답장을 보내 주셔서 감사합니다.유닛 테스트는 lucene과 같이 RAMDirectory를 쉽게 설정할 수 있습니까? – Karussell

2

여기 Lucene을 사용해야하는 상황이 있습니다.

문서 집합이 주어지면 가장 일반적인 용어를 찾습니다.

여기에서 각 문서의 용어 벡터에 액세스해야합니다 (TermVectorMapper의 저수준 API 사용). Lucene을 사용하면 매우 쉽습니다.

또 다른 사용 사례는 매우 특수화 된 검색 결과 순서입니다. 예를 들어 저자명 (여러 권의 책을 저술 한 사람)을 검색하여 처음 10 개 결과의 각 상점에서 한 권의 책을 만들 수 있습니다. 이 경우 각 서점의 결과를 찾고 최종 결과를 표시하기 위해 각 서점에서 하나의 결과를 선택하겠습니다. 여기에서 본질적으로 최종 결과를 생성하기 위해 여러 검색을 수행하고 있습니다. lucene의 저급 API에 대한 액세스 권한을 갖는 것이 분명 도움이됩니다.

Lucene을 위해 한 가지 더 많은 이유는 가능한 한 새로운 것을 얻는 것이 었습니다. 이 두 가지가 병합되고 동기 릴리스가 있으므로 더 이상 사실이 아닙니다.

+0

TermVectorMapper 관련 -> Solr을 사용할 수 있는지 알고 있습니까? 검색 순서 예 : Solr의 그룹화 기능으로이 작업을 수행 할 수 없습니까? http://blog.jteam.nl/2009/10/20/result-grouping-field-collapsing-with-solr/ – Karussell

+0

TVMapper가 핵심입니다. Lucene에게. 소스에서 직접 읽을 수있을 때 여분의 레이어를 사용해야하는 이유는 무엇입니까? 나는 그룹핑을 정확히 찾고 있지 않습니다. 각 서점의 모든 결과를 원하지만 순서를 몇 가지 추가 기준이있는 라운드 로빈의 근사치로 사용하고 싶습니다. –

2

나는 놀랐다. 아무도 언급하지 않았다. NRT - Lucene과 함께 사용할 수있는 근사 실시간 검색이지만 아직 Solr과는 사용할 수 없다.

+0

정말요? http://wiki.apache.org/lucene-java/NearRealtimeSearch 링크가 있습니다. solr도 가능하다고 생각했습니다. – Karussell

+0

@Karussell : https://issues.apache.org/jira/browse/SOLR을 참조하십시오. -1606 –

+0

감사합니다 Mauricio! – Karussell

0

성능보다 확장성에 더 관심이있는 경우 Solr을 사용하고 확장 성보다 성능에 더 관심이있는 경우 Lucene을 사용하십시오.

+0

이 질문은 4 세 btw ... ElasticSearch를 살펴보십시오! – Karussell