Java-lucene更新单条索引

Java-lucene更新单条索引

甜柠檬 发布于 2017-05-27 字数 262 浏览 1092 回复 4

我现在更新数据库里的一条记录,这要怎么做增量索引呢,毕竟这不是新增的,是更新旧的信息,这要怎么更新单条索引呢并把原有的去掉,求解决
我再补充提问一下,怎么删除指定的一条索引呢,并指定更新一条索引,比如说我删除了ID为1的一条索引,并要增量一条ID为1的索引。

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

夜无邪 2017-09-11 4 楼

如果你是修改了docment结构,例如增加/删除字段,这样你应该写另外一份索引,并合理的设置commit避免过快merge导致过高磁盘IO,增加创建索引速度

想挽留 2017-08-05 3 楼

先通过ID删除该记录,然后新增一条记录

甜柠檬 2017-07-30 2 楼

IndexWriter.deleteDocuments(Query),要注意删除完成后,一定要调用相应的Close方法,否则并未真正从索引中删除。

writer = new IndexWriter(directory,new IndexWriterConfig(Version.LUCENE_35,new StandardAnalyzer(Version.LUCENE_35)));

//参数是一个选项,可以是一个Query,也可以是一个term,term是一个精确查找的值
writer.deleteDocuments(new Term("id","1"));

writer.close();

虐人心 2017-06-07 1 楼

Lucene没有提供真正意义上的更新索引操作,但官方的说法是可以先把原来的给删掉,然后在增加,理由是官方认为这样的操作并不会造成效率的问题,他们认为已经足够快。

你说的ID是索引的ID?Lucene是在后面追加索引的,也就是说不能说删除了ID为1的索引,然后建立一个ID为1的索引。

还有一个PanYue的删除方法,并不是真正意义上的删除,而是放到一个相当于回收站的文件中,也就是说是可以回复的。假如要真正的删除,除了上面的操作,你还要优化一下,不过这个Lucene会在适当的时候帮你做这个事。