2013-08-13 2 views
0

색인에 문서를 추가하려고하는데 다음 함수를 실행하려고하면 numDocs1으로 반환하고 이전 문서를 덮어 씁니다! 내가 뭔가 잘못하고 있는거야? 나는 다른 프로젝트에서 똑같이했는데 잘 돌아갔다. Lucene 3.4 색인에 문서 덮어 쓰기

IndexWriter writer; 
    Directory dir = FSDirectory.open(new File("/home/omid/Desktop/Indexes")); 
    writer = new IndexWriter(dir, new StandardAnalyzer(Version.LUCENE_34), true, IndexWriter.MaxFieldLength.UNLIMITED); 
    Document doc = new Document(); 
    doc.add(new NumericField("id", Field.Store.YES, false).setIntValue(writer.numDocs())); 
    doc.add(new NumericField("day", Field.Store.YES, false).setIntValue(13)); 
    doc.add(new NumericField("month", Field.Store.YES, false).setIntValue(1)); 
    doc.add(new NumericField("year", Field.Store.YES, false).setIntValue(1387)); 
    doc.add(new Field("content", new FileReader(new File(filename)), Field.TermVector.YES)); 
    doc.add(new Field("address", filename,Field.Store.YES, Field.Index.NOT_ANALYZED)); 
    writer.addDocument(doc); 
    writer.close(); 
    mes = "Indexed Filename: " + filename; 
    mes = mes + "<BR>Number of docs: " + writer.numDocs(); 

은 3.4 루씬 3.0에서 어떤 변화가 있는가 또는 나는 그것이 인덱스가 생성 여부를해야하는지 여부를

답변

2

IndexWriter constructor의 세 번째 인수가 지정 WR하고있는 중이 야. 예에서와 같이 create=true 인 경우 이전 색인이 삭제되고 새 색인으로 바뀝니다. false이면 기존 색인에 추가됩니다.

또한이 스타일의 IndexWriter은 3.4에서 더 이상 사용되지 않으며 4.x에서는 없습니다. 대신 IndexWriterConfigIndexWriter에 전달하는 것이 좋습니다.

관련 문제