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不起作用。因此,每次我索引一个文件时,它都不会删除已经存在的文件,然后创建一个新文件而不是只复制它。
这与work.lock文件
有什么关系吗?答案 0 :(得分:0)
您似乎已注释掉了将IndexItem.ID
字段添加到文档的行。如果该字段未添加到文档中,则对deleteDocuments
的调用将无法在该字段上找到任何匹配项,也不会删除任何内容。