2013-07-08 4 views
1
public void index(IndexItem indexItem) throws IOException { 
    writer.deleteDocuments(new Term(IndexItem.ID,indexItem.getId().toString()));      
    Document doc = new Document(); 
    // doc.add(new LongField(IndexItem.ID, indexItem.getId(), Field.Store.YES)); 
    doc.add(new TextField(IndexItem.CONTENT, indexItem.getContent(), Field.Store.NO)); 
    doc.add(new StringField(IndexItem.PATH, indexItem.getPath(), Field.Store.YES)); 

    // add the document to the index 
    writer.addDocument(doc, analyzer); 


    writer.updateDocument(new Term(IndexItem.CONTENT, indexItem.getContent().toString()), doc); 
    System.out.println(indexItem.getTitle()); 
    writer.close(); 
} 

여기 Writer.deleteDocuments가 작동하지 않습니다. 따라서 파일을 색인 할 때마다 기존 파일을 삭제하지 않고 새로운 파일을 만듭니다. 단지 사본을 만듭니다.IndexWriter deleteDocuments 함수가 작동하지 않습니다.

이 무엇인가하는 것은

답변

0

당신은 문서에 IndexItem.ID 필드를 추가 라인을 주석 것으로 보인다 work.lock 파일을해야한다. 해당 필드가 문서에 추가되지 않으면 deleteDocuments에 대한 호출은 해당 필드에서 일치하는 항목을 찾지 못하고 아무 것도 삭제되지 않습니다.

+0

오, 죄송합니다. 입력상의 실수였습니다. 오류가 해결되었습니다. 귀하의 회신에 감사드립니다. –

+0

@myk. 어떻게 그걸 해결 했니? 나는 비슷한 문제가있다. –

관련 문제