2012-08-22 3 views
7

약 16GB 크기의 색인 파일을 작성한 후 색인 작성 작업 중에 Lucene을 사용하는 색인 ​​작성 프로그램이 충돌하는 것 같습니다.Lucene.net - 색인 생성 중에 충돌이 발생했습니다.

콘솔에 쓰여지는 스택 추적은 잘 모르는 이유로 3 번 반복됩니다. 간결함을 위해 나는 반복되는 단일 부분만을 제공했습니다. 여기 루씬에 의해 conolse에 기록으로 스택 추적입니다 : 나는이 손상된 것 아마 때문에 인덱스가 삭제됩니다 누가 복음의 자바 에디션 (로 생성 된 로그를 열 때

Lucene.Net.Index.MergePolicy+MergeException: Exception of type 'Lucene.Net.Index.MergePolicy+MergeException' was thrown. ---> 

System.IO.FileNotFoundException: Could not find file 'PATH_TO_MY_INDEX_DIRECTORY\_xx.cfs'. 

File name: 'PATH_TO_MY_INDEX_DIRECTORY\_xx.cfs' 
at Lucene.Net.Index.IndexWriter.HandleMergeException(Exception t, OneMerge merge) 
at Lucene.Net.Index.IndexWriter.Merge(OneMerge merge) 
at Lucene.Net.Index.ConcurrentMergeScheduler.MergeThread.Run() 
--- End of inner exception stack trace --- 
at Lucene.Net.Index.ConcurrentMergeScheduler.HandleMergeException(Exception exc) 
at Lucene.Net.Index.ConcurrentMergeScheduler.MergeThread.Run() 
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
at System.Threading.ThreadHelper.ThreadStart() 

에서, "write.lock"파일이 남아있다가, 예를 들어), 이것은 Luke의 버그 또는 잘못된 설정 일 수 있습니다.

이 색인을 생성하는 데는 약 36 시간이 걸리고 3 번째로 다시해야하는 번거 로움이 없습니다. (처음 발생하는 것은 아닙니다).

나는 무엇이 이것을 일으키는 지 전혀 모른다. 내가 무엇을 할 수 있을지?

Lucene.net 2.9.2는 .NET 3.5 용으로 제작 된 마지막 버전이기 때문에 사용하고 있습니다.

+0

로컬 드라이브에 대한 색인을 생성 하시겠습니까? –

+0

예, 로컬 드라이브입니다. 인덱스 파일을 사용하는 다른 프로세스가 없으며 인덱싱 프로그램에 단일 IndexWriter 인스턴스가 있습니다. – Dai

+0

lucene java에서이 문제를 일으킬 수있는 이유는 파일 핸들이 부족하여 Lucene.net tho에 적용되는지 확신 할 수 없다는 것입니다. –

답변

3

이 문제는 Commit을 호출하지 않고 색인에 너무 많이 쓰는 것으로 나타났습니다. 약 10MB의 데이터를 작성한 후 Commit으로 코드를 수정했습니다. 그 이후로는 예외가 없었습니다. 충돌이 발생하면 36GB 인덱스 전체를 다시 빌드 할 필요가 없으며 마지막 10MB 만 다시 빌드 할 필요가 없습니다.

1

찾기에는 다소 시간이 걸렸지 만,이 경우에는 로컬 하드 디스크가 꽉 찼기 때문입니다. 보다 유용한 예외 메시지가 도움이되었을 것입니다.

관련 문제