2011-04-13 4 views
0

Lucene을 기반으로하는 자택 검색 서비스가 있습니다. 몇 시간 전에 직면했던 특정 질문 중 하나는 IndexWriter에 대한 보류중인 변경 사항의 수를 얻는 것입니다. 보류중인 변경 카운터가 0 인 경우 인덱스에 커밋 할 필요가 없습니다. IndexReader, IndexSearcher 등을 다시 열면됩니다. 또한 IndexReader.commit() 호출에 연결된 일부 응용 프로그램 수준 논리가 있으며 커밋 시점에서 실제 변경 사항이없는 경우 호출하지 않는 것이 좋습니다.IndexWriter에서 보류중인 변경 수 가져 오기

IndexReader.updateDocument()IndexReader.remove() 메서드가 호출되는 모든 위치에 액세스 할 수 있으므로 보류중인 변경 내 자신의 카운터를 간단히 작성할 수 있습니다. 하지만 Lucene API 자체에 이미 존재하는 것이있을 수 있습니다. API 확인으로 해당 주제에 대한 충분한 정보를 얻을 수 없습니다.

답변

3

IndexWriter.numRAMDocs을 사용하여 추가 된 문서 수를 얻을 수 있지만 현재 버퍼링 된 삭제 횟수를 가져 오는 공개 API는 없다고 생각합니다.

IndexWriter.ramSizeInBytes 또한 여기에서 유용 할 수 있습니다. RAM이 현재 얼마나 사용되고 있는지 알려주므로 문서를 추가하거나 삭제할 때 증가하지만 플러시가 발생하면 감소합니다. 당신이 변화를 보류중인 경우 IndexWriter, 즉에서 변경 내용을 커밋하지만 IndexReader.isCurrent 여전히 true를 돌려줍니다 작가를 저지른 (또는 폐쇄)하지 않은 경우 IndexReader.isCurrent 만 사용할 수 있는지

참고.

관련 문제