解决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了:

  Term id=new Term("id",1231231);

 
indexWriter.updateDocument(id,document);

利用update方法就可以避免添加重复索引了,当索引 里有id为1231231的文档时,就不添加索引,当没有时,就添加索引

建议id为docment中唯一可以识别的键,如果没有的话,再考虑md5

posted @ 2015-12-01 14:45  zzlp  阅读(1393)  评论(0编辑  收藏  举报