4
我的應用程序爲每一行生成唯一的id,在lucene中編制索引並保存到數據庫。 一個解決方案是,如果有和行有相同的ID,我想更新它,而不是插入一個新的行和索引。如何在lucene中設置一個字段以保持行的唯一性?
如何做到這一點?
我的應用程序爲每一行生成唯一的id,在lucene中編制索引並保存到數據庫。 一個解決方案是,如果有和行有相同的ID,我想更新它,而不是插入一個新的行和索引。如何在lucene中設置一個字段以保持行的唯一性?
如何做到這一點?
這正是IndexWrite#updateDocument方法的目的。第一個參數是您的索引中必須唯一的術語。
例如,
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不存在,它會插入嗎? – Shisoft 2012-03-07 16:20:26
是的。該文檔指出「通過首先刪除包含術語的文檔並添加新文檔來更新文檔。」所以在特定的情況下,在之前沒有使用相同的ID索引文檔的情況下,不會刪除任何文檔。 – jpountz 2012-03-07 17:16:56