lucene 解决主键重复

 

比如有两条记录
Document0: 
                id:1   pk
                content :hello 
Document1: 
                id :1  pk
               content :hello world
建立索引用ik分词,建立索引 
搜索content 会出现两条记录

解决:使用 QueryFilter进行搜索过滤
Query query = new TermQuery(new Term("content", "hello"));
Filter filter = new DuplicateFilter("id");
Query query1 = new FilteredQuery(query, filter);
ScoreDoc[] docs = searcher.search(query1, Integer.MAX_VALUE).scoreDocs;
此时出现的结果就只有一条了,但可能命中的结果不准确,可以设置读取的文章是第一篇还是最后一篇 ,此方法是为了解决如一片文章分多页,一页为一个document,一篇文章的多页id相同的问题。
posted @ 2017-05-09 22:53  王南辉  阅读(697)  评论(0编辑  收藏  举报