lucene 解决主键重复

Posted 王南辉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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相同的问题。

以上是关于lucene 解决主键重复的主要内容,如果未能解决你的问题,请参考以下文章

主键唯一键重复插入解决方法

解决 mysql 导入时重复的主键

mysql主键对应的值不能重复

SQL多个主键的表,插入数据有重复时,查询数据的重复值?

SQL 插入语句要求主键输入不能重复不能为空 sql语句怎么写

Lucene:分页返回重复