2011-03-21 4 views
0

고객 (외부)이 인트라넷에 배포하는 엔터프라이즈 Java 웹 응용 프로그램이 있습니다. 나는 Lucene/Solr/Hibernate Search와 같은 전체 텍스트 검색 옵션을 탐구하고 있는데 공통 관심사는이를위한 배치/관리/튜닝 오버 헤드이다.클라이언트 사이트에서 호스팅되는 응용 프로그램에서 텍스트 검색 (Lucene/Solr/Hibernate Search)을 임베드 할 때의 어려움

우리가 이러한 응용 프로그램을 호스팅하지 않기 때문에 우리의 경우 특히 어려울 수 있습니다. 내가 본 것에서 볼 때 이러한 기술의 대부분은 호스팅 된 응용 프로그램에 사용되었습니다. 고객은 일반적으로 클러스터 환경에서 애플리케이션을 배포하며 Lucene/Solr에 대한 경험이 없습니다.

아무도이 경험이 있습니까? 이 접근법으로 어떤 어려움을 겪었습니까? 어떻게 그들을 극복 했습니까? 이 시점에서 이것이 가능한지 판단하려고합니다.

루씬 (또는 SOLR)를 사용하는 클라이언트 사이트에 응용 프로그램을 배포하는 것은 매우 가능하다 당신

답변

0

감사드립니다. 명심해야 할

어떤 것들은 : 인덱스에서 문서를
구조를 변경할 때 관리 당신이 버전 방법이 필요

  • 은 색인, , 그것은
    할 수 있도록/경우 업그레이드 됨.
  • 따라서 기존 데이터를 다시 색인화하려면 모두 해야합니다. 또한 관리자에게 옵션을 제공하면 관리자가 에서 다시 색인을 트리거 할 수있게하는 것이 좋습니다.
  • 색인에에 optimize()을 호출하거나이 일정을 관리 할 수있는 관리자 옵션을 제공 할 수도 있습니다. 이 필요하지 않을 수 있기 때문에 베스트

Deployement 클러스터 된 환경에 배포하는 경우, 간단한 (색인의 모양 에 따라이 먼저해야합니다 실제 영향 을 테스트 dev 속도와 런타임 속도면에서 가장 빠름) 솔루션은 각 노드에 인덱스를 생성하는 것일 수 있습니다.

튜닝 * 색인을 생성 할 데이터 세트를 대략적으로 알고 있습니까? 합리적인 데이터 집합 크기를 고려할 때 클라이언트와 다를 수 있으므로 인덱스의 속도와 크기가 어떻게 조정되는지 이해할 필요가 있습니다. 따라서 적어도 다음을 수행 할 수 있어야합니다. 클라이언트는 어떤 요인이 지나치게 큰 인덱스 크기로 이어질지, 그리고 아마도 성능 저하를 알 수 있습니다.

0

embedding lucene in your app에는 쿼리를 별도의 Solr 클러스터에 전달하는 것보다 두 가지 장점, 성능 및 배포/설치의 용이성이 있습니다. lucene을 임베딩한다는 것은 같은 JVM에서 lucene을 실행하는 것을 의미합니다. 이는 추가 서버 라운드 트립을 의미하지 않습니다. 커밋은 별도의 스레드에서 일괄 처리해야합니다. lucene을 임베딩한다는 것은 클래스 경로에 더 많은 JAR 파일을 포함한다는 것을 의미하므로 Solr을 별도로 설치할 필요가 없습니다.

응용 프로그램이 클러스터를 인식하는 경우 내장 된 lucene 옵션은 매우 문제가됩니다. 클러스터의 한 노드에 대한 업데이트는 클러스터의 노드에서 검색 할 수 있어야합니다. 모든 노드에서 lucene 인덱스를 동기화하면 Solr을 사용할 때보 다 성능이 향상되지 않습니다. Solr 4를 사용하면 고객 관리를위한 장벽을 덜어 줄 수 있습니다. 심하게 명명 된 Solr Cloud의 문헌을 확인하십시오.

관련 문제