2012-03-16 55 views
1

在我的情況下,插入到lucene索引中的每個文檔都有其唯一的ID。在lucene索引中添加新文檔時,如果文檔已存在於索引中,則不應將文檔插入到索引中。如何實施這一戰略?
我想我應該首先用docId搜索文檔,如果lucene找不到該文檔,那麼我插入它。但是,因爲我有3個線程共享唯一的indexWriter來索引,我猜應該有一些錯誤的情況。例如:線程1和線程2正在處理具有相同docId的兩個文檔,如果thread1搜索到docId並且什麼也沒找到,它會將該文檔插入到索引中,但是thread1可以在thread1讀取索引後將其文檔插入到索引中。因此,索引中存在兩個文檔。我怎樣才能避免這種情況?lucene:如何在不重複的情況下添加文檔

回答

5

IndexWriter.updateDocument將根據術語自動刪除並添加文檔。

+0

如何處理場景 - 如果找到文檔,則不更新,如果未找到則更新。 [請參閱我的問題](http://stackoverflow.com/questions/39653209/how-to-avoid-duplicate-document-indexing-in-lucene-6-0)。我不確定我是否缺少任何東西,但對於我的情況 - 大多數自然情況似乎是在文檔沒有找到密鑰時更新。我已將所有字段組合爲文檔鍵。 – 2016-09-23 10:28:05

+0

我要求執行的是以下三點1.如果傳入文檔存在並且沒有比現有文檔更改 - 什麼都不做2.如果文檔存在並且比現有文檔存在更改 - 更新文檔3.如果文檔不存在 - 添加文件。 – 2016-09-23 10:32:12

相關問題