【问题标题】:lucene: how to add document without duplicationlucene:如何在不重复的情况下添加文档
【发布时间】:2012-03-16 03:58:13
【问题描述】:

就我而言,插入到 lucene 索引中的每个文档都有其唯一 ID。将新文档添加到 lucene 索引中时,如果该文档已存在于索引中,则不应将该文档插入到索引中。如何实施这个策略?
我想我应该先用docId搜索文档,如果lucene找不到文档,那么我插入它。但是,因为我有 3 个线程共享唯一的 indexWriter 来索引,我想应该有一些错误的情况。例如:线程 1 和线程 2 正在处理两个 docId 相同的文档,如果线程 1 搜索 docId 没有找到,则将文档插入索引,但线程 2 可能会在线程 1 读取索引后将其文档插入索引。结果,索引中存在两个文档。我怎样才能避免这种情况?

【问题讨论】:

    标签: lucene


    【解决方案1】:

    IndexWriter.updateDocument 将根据术语自动删除和添加文档。

    【讨论】:

    • 如何处理这种情况 - 如果找到文档则不更新,如果未找到则更新。 Please see my question。除了我的场景,我不确定我是否遗漏了任何东西 - 最自然的情况似乎是在找不到文档的密钥时进行更新。我已将所有字段组合为文档键。
    • 我要求实现的是这三点 1. 如果传入文档存在并且没有比现有文档更改 - 什么都不做 2. 如果文档存在并且比现有文档更改 - 更新文档 3. 如果文档不存在 - 添加文档。
    猜你喜欢
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2015-06-04
    • 2020-04-07
    • 2016-06-02
    • 2012-12-06
    • 1970-01-01
    相关资源
    最近更新 更多