2013-12-18 5 views
0

현재 Lucene.Net에 삽입하기 전에 (느린 프로세스로) 많은 문서를 색인화하는 프로젝트를 진행 중입니다.Lucene.Net IndexWriter multiple applications

인덱싱 속도를 높이려면 Windows 서비스를 복제하여 하나의 스레드 만 내 서비스에 보관하고 싶습니다. 즉, 여러 개의 IndexWriter가 있으며 잠금으로 인해 불가능합니다. 또한 서비스는 공유 메모리가 불가능하다는 것을 의미하는 동일한 서버에 존재하지 않습니다.

안전하게 수행 할 수있는 방법이 있습니까? 그렇다면 어떻게해야합니까?

미리 답변 해 주셔서 감사합니다.

레니

+3

하드웨어가 무엇입니까? IndexWriter는 AddDocument를 호출하는 여러 스레드를 처리 할 수 ​​있으므로 입력을 처리하고 문서를 생성하는 여러 스레드를 실행할 수 있습니다. 또한 문서 생성 속도가 느린 이유는 무엇입니까? – sisve

+0

느린 부분은 Doc/Docx/PDF를 텍스트로 변환 한 다음 Lucene 문서에 추가해야합니다. 다중 스레드 응용 프로그램이 없다는 것은 결국 동일한 IndexWriter를 사용하지 않는다는 것을 의미합니다. 나는 아직도 이것에 붙어있다. 어떤 생각? – Lenny32

답변

1

모든 작가가 자신의 디렉토리를 작성해야합니다, 당신은 IndexWriter.AddIndexesNoOptimize

를 사용하여 마지막 단계로 둘을 병합 할 수는이 인덱스에 인덱스의 배열에서 모든 세그먼트를 병합합니다.

배치 인덱싱을 병렬 처리하는 데 사용할 수 있습니다. 큰 문서 모음은 하위 모음으로 나눌 수 있습니다. 각 하위 모음은 다른 스레드, 프로세스 또는 시스템에서 병렬로 색인 할 수 있습니다. 그런 다음 하위 모음 색인을이 방법과 병합하여 전체 색인을 만들 수 있습니다.

+0

고맙다. 나는 그 프로젝트에서 일할 시간을 갖자 마자 그것을 시도 할 것이다. 알려 드리겠습니다. – Lenny32