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相同的问题。

时间: 2024-12-28 13:35:41

lucene 解决主键重复的相关文章

mysql主键设置成auto_increment时,进行并发性能测试出现主键重复Duplicate entry 'xxx' for key 'PRIMARY'

mysql主键设置成auto_increment时,进行并发性能测试出现主键重复Duplicate entry 'xxx' for key 'PRIMARY' 解决方法: 在my.cnf的[mysqld]片段中添加设置innodb_autoinc_lock_mode=0 同时注意调大jdbc的活跃链接数,如设置 jdbc.maxActive=300,因为设置innodb_autoinc_lock_mode=0可能导致链接过多. 注意,这种方式只需要在并发性能测试时设置,因为这种方式在插入记录时需

mysql insert 主键 重复问题

转自:http://blog.163.com/[email protected]/blog/static/173131045201222122732435/ mysql中insert into和replace into以及insert ignore用法区别: mysql中常用的三种插入数据的语句: insert into表示插入数据,数据库会检查主键,如果出现重复会报错: replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用

jfinal基本应用 --报主键重复

在使用jfinal 的Model过程中有一个很怪异的问题,发布到服务器上,只要是往表中添加字段,就报主键重复. 1.我添加表的时候调用了 public void create(Map map){ String assocName = (String) map.get("assocName"); String telephone = (String) map.get("telephone"); set(COLLUMNS.ASSOC_NAME, assocName);

mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法

[CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问题 [CSDN博客] mysql 主从复制 双主从复制原理 防止主键重复问题(必看) [CSDN博客] replace into导致mysql自增列导致主键重复问题分析 [CSDN博客] 一个循环更新某库所有表所有非主键列的值方法(sql 2005 & mysql) [CSDN博客] mysql i

分布式部署应用时主从同步时候主键重复

原因: 解决方法: 用redis生成主键 /** * * @Title: getContractId * @user: zzx * @time: 2016年11月15日下午5:36:15 * //DESC 获取订单ID * @param param step:步长 * @return 当前分布式环境下最新ID * @return String 返回类型 * @throws */ public String getContractId(JSONObject param){ int step = p

自增列导致主键重复

有记录进行插入时,自增列产生的值就有可能与已有的记录主键冲突,导致出错.首先想办法解决问题,通过人工调大自增列的值,保证大于表内已有的主键即可,调整后,导数据正常 问题发生的前置条件: 1.mysql复制基于row模式 2.innodb表 3.表含有自增主键,并且含有唯一约束 4.load data infile 采用replace into语法插入数据[遇到重复唯一约束,直接覆盖] 问题发生的原理: 1.主库遇到重复unique约束时,进行replace操作: 2.replace在主库上面实际

JPA的坑多服务主键重复

配置如下 @Id @GeneratedValue(generator="generator") @GenericGenerator(name="generator",strategy="increment") @Column(name = "id") public Long getId() { return id; } 问题就 出在这 由Hibernate从数据库中取出主键的最大值(每个session只取1次),以该值为基础,

MySQL双主如何解决主键冲突问题

搭建了个双主,突然想到如果表设置了自增主键的话,当业务同时向双库中插入一条数据,这时候情况是什么样子的呢? 比如:主库A和主库B上的一个表数据为: 12 'ninhao' .当业务同时写入数据后主库A的数据是13  'new nihao' ? 那主库B上的数据是什么呢?主键也是13 ? 建议类似双主这种情况: 事先设置好offset和increment的值,即:实现设置好自增字段的初始值和步长.主库A为奇数起步,主库B为偶数起步.两者都采用相同的步长. 1).设置主主服务器的自增长偏移位置不同:

sql解决主键冲突

在数据插入的时候,假设主键对应的值已经存在,则插入失败!这就是主键冲突.当主键存在冲突(duplicate key)的时候,可以选择性的进行处理,即忽略.更新或者替换. 1.忽略 insert ignore into table 保持原记录,忽略新插入的记录 2.替换 replace into table 替换原记录,即先删除原记录,再插入新的记录 3. 更新 insert into table value("xx","xx") ON DUPLICATE KEY U