2008-09-17 5 views
7

데이터베이스에 대한 검색 기능을 향상시키기위한 메커니즘을 모색 중입니다. 현재 데이터베이스 성능을 저해하는 장기간의 쿼리를 유발하는 큰 병목 현상입니다.Lucene을 사용하여 DB를 검색하는 가장 좋은 방법은 무엇입니까?

내 상사가 Solr을 조사하기를 원했으나 자세히 살펴보면 실제로 Lucene과 DB 통합 메커니즘이 필요합니다.

Lucene FAQ에서

, 그들은 Hibernate Search, Compass DBSight 을 추천합니다.

우리는 현재 기술 스택의 배경으로 Tomcat에서 똑 바른 JSP를 사용하고 Hibernate는 없으며 다른 프레임 워크가 없습니다 ... DB2 데이터베이스에 대해 Java, JSP 및 JDBC 만 연결하면됩니다.

Hibernate Search는 우리 시스템에 통합하는 것이 다소 어려울 수 있지만, 그러한 통합 후에 Hibernate를 사용할 수있는 옵션을 갖는 것이 좋을 것 같습니다.

누구나 올바른 도구를 선택하는 데 도움이 될 수있는 이러한 도구 (또는 다른 유사한 Lucene 기반 솔루션) 중 하나를 사용하여 공유 할 수있는 경험이 있습니까?

이 도구는 OSS 솔루션이어야하며 이상적으로는 변경 사항이있을 때 도구에 알리기위한 노력 없이도 Lucene 업데이트를 자동으로 데이터베이스에서 자동으로 (효율적으로) 관리 할 수 ​​있습니다. 그렇지 않으면 내 자신의 Lucene 솔루션도 마찬가지로 좋을 것이다). 또한 단 하나의 데이터베이스 (장애 조치 (failover))가있는 여러 개의 응용 프로그램 서버가 있기 때문에 모든 응용 프로그램 서버의 솔루션을 원활하게 사용하는 것이 쉽습니다.

지금 옵션을 계속 검사하고 있지만 다른 사람들의 경험을 활용하면 도움이 될 것입니다.

+0

혹시 루씬을 통합 했는가? –

답변

0

Lucene 검색을 통한 순수한 성능 향상을 위해 확실히 도움이 될 것입니다. 당신이 관심을 갖고 있거나 필요로하는 것을 색인화하고 당신은 선해야합니다. 당신이 원한다면 당신은 최대 절전 모드 또는 다른 조각을 사용할 수 있지만 그것이 필요하다고 생각하지 않습니다. 그것은 절대적으로 별 해결책이되지 않는 이상

+0

응답 해 주셔서 감사합니다! 불행하게도, 난 정말 내 자신의 본격적인 솔루션을 출시 할 필요가 없습니다 이러한 프레임 워크가 제공 할 수있는 무엇을보고 싶습니다. –

0

글쎄, 내가 나침반과 좋은 경험이 있었다

2

... 그것은 지금 나를 위해 옵션을 선택하지 않습니다, DBSight doesn't meet the FOSS requirement 보인다. 그것은 최대 절전 모드와 정말 잘 통합되어 있으며, GPS 장치 http://www.compass-project.org/docs/1.2.2/reference/html/gps-jdbc.html을 통해 Lucene 인덱스에 대한 최대 절전 모드와 jdbc를 통한 데이터 변경을 직접 미러링 할 수 있습니다.

모든 응용 프로그램 서버에서 Lucene 색인을 유지 관리하는 것이 문제 일 수 있습니다. db를 업데이트하는 응용 프로그램 서버가 여러 개인 경우 색인을 모든 변경 사항과 동기화하여 유지할 때 문제가 발생할 수 있습니다. 나침반은 이제 이것을 처리하기위한 대체 메커니즘을 가지고 있습니다.

Alfresco Project (CMS)도 Lucene을 사용하며 이러한 문제를 처리하는 데 유용 할 수있는 서버 간 Lucene 색인 변경 사항을 복제하는 메커니즘이 있습니다.

최대 절전 모드 검색이 실제로 종료되기 전에 우리는 Compass를 사용하기 시작 했으므로 절대로 비교할 수 없습니다.

3

"DB에 대한 검색"이라고 말하면 무엇을 의미합니까?

관계형 데이터베이스 및 정보 검색 시스템은 정당한 이유로 매우 다른 접근 방식을 사용합니다. 어떤 종류의 데이터를 검색하고 있습니까?어떤 종류의 검색어를 수행합니까?

데이터베이스 위쪽에 역 색인을 구현하려는 경우 Compass에서와 같이 Lucene의 Directory 추상화를 BLOB로 구현하는 방식을 사용하지 않습니다. 오히려 Lucene의 IndexReader 추상화를 구현할 것입니다.

관계형 데이터베이스는 인덱스를 유지 확실히 할 수있다. 이 문맥에서 Lucene이 가져 오는 가치는 분석 기능으로, 구조화되지 않은 텍스트 레코드에 가장 유용합니다. 좋은 접근 방식은 각 도구의 강점을 활용합니다. 업데이트 지수하게됨에

는 루씬은 비용 "최적화"절차가 사용될 때까지 성능이 저하 이상의 세그먼트 (또는 추가 파일에 BLOB)를 생성한다. 대부분의 데이터베이스는 각 인덱스 업데이트에 대해이 비용을 상각하여보다 안정적인 성능을 제공합니다.

1

LuSql http://code.google.com/p/lusql/은 당신이 검색하고, 루씬에 JDBC 액세스 데이터베이스의 내용을로드 할 수 있습니다. 고도로 최적화되고 멀티 스레드입니다. 나는 LuSql의 저자와 다음 달에 새 버전 (새로운, 플러그 인 아키텍처를 다시 아키텍처)로 나오는 것입니다.

관련 문제