2012-09-04 4 views
0

내 질문 잠금 :이 테스트에서루씬 .NET IndexWriter 다음 코드와 관련된

static void Main(string[] args) 
{ 
    Lucene.Net.Store.Directory d = FSDirectory.Open(new DirectoryInfo(/*my index path*/)); 
    IndexWriter writer = new IndexWriter(d, new WhitespaceAnalyzer()); 

    //Exiting without closing the indexd writer... 
} 

을, 나는 그것을 닫지 않고 IndexWriter을 열어 - 그래서 심지어는 시험 종료 후 write.lock 파일이 여전히 존재 인덱스 디렉토리에서 다음 번에 해당 인덱스에 대한 IndexWriter 인스턴스를 열면 LockObatinFailedException이 발생합니다. 누군가 내가 왜 잘못했는지 설명해 줄 수 있습니까? 즉, write.lock 파일의 의미는 동일한 프로세스에서만 두 개의 IndexWriter 생성을 보호하는 것입니까? 당신은 예외를 얻을 것이다

IndexWriter writer = new IndexWriter("Path to index here", new WhitespaceAnalyzer()); 

: 나던 나에게 정답 ... 당신이 코드를 변경하는 경우, 그 IndexWriter 생성자 버그가있는 것 같습니다

답변

2

을 보인다.

잠금 파일은 같은 프로세스에 있는지 여부에 관계없이 동일한 인덱스에서 열린 2 개의 IndexWriter를 방지하는 데 사용됩니다. 당신은 거기에 예외를 기대하는 것이 옳습니다.

+0

당신 말이 맞습니다! 문자열 대신 Directory를 사용하는 모든 생성자는 예외를 throw하지 않습니다 ...이 문제가 이후 버전에서 수정되었는지 궁금합니다. 어쨌든, 고맙습니다 :) –