2009-09-08 2 views
0

나는 약 1000 만 개의 행을 가진 SQL 2000 데이터베이스를 가지고 있으며 전체/부분 텍스트 검색을 기반으로 제품 정보를 얻기 위해 쿼리를 작성해야합니다. 이 정보를 바탕으로 내 비즈니스 프로세스를 확인하기 위해 다른 테이블에 다시 가입해야합니다. SQL proc를 사용하여이 기능을 구현했지만 약 6 행 (스레드가없고 긴 비즈니스 로직이없는 경우) 만 유효성을 검사 할 수 있습니다. 성능 향상을위한 더 나은 방법을 찾고 있습니다. Lucene.NET이 도움이 될 수 있습니다. 나는 몇 가지 질문을 가지고있다.Lucene.NET with SQL SERVER 2000

정확한 정보원을 안내해 줄 수 있습니까?

Lucene에서 색인을 작성하는 동안 SQL 데이터베이스와 lucene DB를 어떻게 동기화합니까? Lucene이 실제 성능을 향상시킬 수 있다고 생각하십니까?

답변

1
  • Mark Krellenstein's 'Search Engine versus DBMS'으로 시작하면 Lucene과 같은 전문 검색 엔진이 해결책이 될 수 있습니다. 이론적으로 Lucene은 텍스트 검색을 위해 SQL보다 빠르지 만 마일리지는 다를 수 있습니다.
  • 데이터베이스 복제와 조금 비슷한 Lucene으로 증분 업데이트를 수행 할 수 있습니다. 이렇게하면 Lucene 색인이 데이터베이스와 동기화됩니다.
+0

답장을 보내 주셔서 감사합니다. 꽤 많은 튜토리얼을 살펴 보았고 DB 레코드를 로컬 파일에 인덱싱 할 수있는 시점에있었습니다. 내 DB가 약 1 천만 개의 레코드라고 했으므로 인덱스를 처음부터 만들면 Lucene이 오래 걸립니다. 나의 접근 방식은 다음과 같습니다 : - 데이터베이스에서 모든 업데이트를 찾고 (매시간) Windows 인덱스를 동기화하고 데이터베이스 레코드와 인덱스를 유지하는 Windows 서비스를 만듭니다. 시간당 2000 개의 레코드가 추가되었다고해서 인덱스 업데이트에 악영향을 미칠 수 있습니다. 색인 작성 중에 검색 속도가 느려 집니까? – bkhanal

+0

글쎄, 어떻게 든 먼저 Lucene 인덱스에 레코드를 가져와야합니다. 가장 좋은 방법은 색인을 처음부터 오프라인에서 작성하는 것입니다. 일단 그렇게하면 증분 업데이트를 사용할 수 있습니다. MySQL을 사용하여 Java Lucene을 사용해 본 경험이 있지만 시간당 2000 개의 레코드 또는 분당 40 개의 레코드가 업데이트에 적합하다고 생각합니다. 검색 속도가 느려질 수 있습니다. http://www.lucidimagination.com/Community/Hear-from-the-Experts/Articles/Scaling-Lucene-and-Solr을 참조하십시오. –