Solr,阻止更新现有文档

Posted

技术标签:

【中文标题】Solr,阻止更新现有文档【英文标题】:Solr, block updating of existing document 【发布时间】:2012-01-19 15:55:15 【问题描述】:

当一个文档被发送到 solr 并且这样的文档已经存在于索引中(通过它的 ID)然后新的替换旧的。

但我不想自动替换文档。忽略并继续下一个。如何配置 solr。

当然,我可以查询 solr 以检查它是否已经有文档,但这对我不利,因为我进行批量更新,这会使过程复杂化并增加请求量。

那么有什么方法可以配置 solr 忽略重复项?

【问题讨论】:

你读过我更新的答案吗?有用吗? 是的,它很有用。感谢您的关注和帮助。我通过实现丢弃新现有文档的简单更新处理程序解决了这个问题。 【参考方案1】:

当您将文档发送到UpdateHandler 时,您可以禁用自动覆盖具有相同唯一索引的文档,并在添加元素中指定属性overwrite="false"。看看here。

<add overwrite="false">
    <doc>
        <field name="id">id</field>
    </doc>
</add>

无论如何这允许将重复的文档放入 solr,而不是跳过与现有文档具有相同 ID 的新文档。我认为这不是您想要的行为。

我认为您应该编写自己的 UpdateHandlerUpdateRequestProcessor 或遵循您从 solr user mailing list 获得的建议。

【讨论】:

你能给我一个配置的例子吗?我不知道把这个设置放在哪里。 它实际上不起作用。我正在使用 solr 3.1.0 并使用 solj 库更新文档。尝试了两种变体。可能是什么情况? 很高兴知道您正在使用 solrj。你是用xml还是二进制格式? 可能是二进制格式。我还将这些设置放入 javabin 请求处理程序,但没有帮助。所以我被困住了。 Alos 我曾尝试将此参数添加到 java 中的请求中,但它也无济于事。 真的很抱歉,我的第一个答案是错误的,我误解了文档。我根据我测试的内容更正了它。再次抱歉。

以上是关于Solr,阻止更新现有文档的主要内容,如果未能解决你的问题,请参考以下文章

Solr模式:在不使用模式类型定义时更新是否安全?

Solr搜索引擎索引提交事务日志原子更新

有没有办法找出一天中更新/写入到 solr 索引的文档

锁定特定文档以在Solr中进行编辑

用于部分文档更新的 solrj api

Solr新特性4.x,5.x,6.x