在使用Lucene过程中,会发现当我们为添加新的Document时,会产生重复现象(两次添加同一个Document),毕竟Lucene中没有像数据库中一样,有键可以区分。不过我们可以通过为Document建立类似于键的域,来防止添加重复的Document。
示例(id这个域就当做键使用了,推荐使用MD5码之类的唯一性较好的作为键):
Document document = new Document();
document.add(new Field("content", "刘德华 很帅" , Field.Store.YES , Field.Index.ANALYZED ,TermVector.NO));
document.add(new Field("id" , "1231231" , Field.Store.YES , Field.Index.NOT_ANALYZED , TermVector.YES));
id域不要分析,要不就会影响评分的。
之后就是加入Document了:
indexWriter.updateDocument(new Term("id",1231231"),document);
利用update方法就可以避免添加重复索引了。不过为了达到效果,还有添加一个域。。。这个利弊,大家自己权衡吧。。。。