Lucene 索引去重

在使用Lucene过程中,会发现当我们为添加新的Document时,会产生重复现象(两次添加同一个Document),毕竟Lucene中没有像数据库中一样,有键可以区分。不过我们可以通过为Document建立类似于键的域,来防止添加重复的Document。

示例(id这个域就当做键使用了,推荐使用MD5码之类的唯一性较好的作为键):

 

  1. Document document = new Document();

  2. document.add(new Field("content", "刘德华 很帅" , Field.Store.YES , Field.Index.ANALYZED ,TermVector.NO));

  3. 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);
posted @ 2018-08-30 19:50  車輪の唄  阅读(21)  评论(0编辑  收藏  举报  来源