2012-03-16 57 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

相关问题