我正在尝试向索引添加文档,但是当我尝试运行以下函数时,它会将numDocs
作为1
返回并覆盖前一个文档!难道我做错了什么?我在另一个项目上做了同样的事情并且工作正常!
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中的lucene 3.0是否有任何改变或者我正在做什么?
答案 0 :(得分:2)
IndexWriter
constructor的第三个参数指定是否应创建索引。如果create=true
,则在您的示例中,删除任何旧索引并替换为新索引。如果它是假的,它将附加到现有索引。
此外,这种IndexWriter
构造函数在3.4中已弃用,在4.x中不存在。最好将IndexWriterConfig
传递到IndexWriter
,而不是。