如何设置字段以保持lucene中的行唯一?

如何设置字段以保持lucene中的行唯一?,lucene,uniqueidentifier,Lucene,Uniqueidentifier,我的应用程序为每一行生成唯一的id,以便在lucene中编制索引并保存到数据库。 一个问题是,如果有和行具有相同的id,我想更新它,而不是插入新行和索引 如何做到这一点?这正是该方法的目的。第一个参数是索引中必须唯一的术语 比如说, String id = "42"; Document doc = new Document(); Field field = new Field("id", id, Store.YES, Index.NOT_ANALYZED); doc.add(field); i

我的应用程序为每一行生成唯一的id,以便在lucene中编制索引并保存到数据库。 一个问题是,如果有和行具有相同的id,我想更新它,而不是插入新行和索引


如何做到这一点?

这正是该方法的目的。第一个参数是索引中必须唯一的术语

比如说,

String id = "42";
Document doc = new Document();
Field field = new Field("id", id, Store.YES, Index.NOT_ANALYZED);
doc.add(field);

indexWriter.updateDocument(new Term("id", id), doc);

将确保
doc
是索引中唯一id为42的文档。

如果id不存在,是否插入?是。文档说明“通过先删除包含术语的文档,然后添加新文档来更新文档”。因此,在以前没有使用相同ID编制文档索引的特定情况下,不会删除任何文档。