Lucene 索引去重
在使用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了:
该方法的id字段必须设置为不可分词状态, 才会生效, 否则该方法一直执行的是adddocument方法
indexWriter.updateDocument(new Term("id",1231231"),document);