我有一个相当简单的需求,需要在 Solr 中进行条件更新,这在 MySQL 中可以轻松完成。
例如,
- 我有 100 个文档,其中包含一个名为
<id>
的独特字段 - 我要发布 10 个文档,其中一些可能重复
<id>
s,在这种情况下,Solr 将使用相同的<id>
更新现有记录。 s - 我有一个名为
<dateCreated>
的字段我只想更新<doc>
如果是新的<dateCreated>
比旧的伟大<dateCreated>
(当然,这仅适用于重复的<id>
)
我怎样才能完成这样的事情?
上下文正在尝试对抗竞争条件,导致同一 ID 多次添加,但执行顺序错误。
谢谢。
请您参考如下方法:
我可以想到两种方法:
- 编写您自己的
UpdateHandler
并覆盖addDoc
来实现该检查。 - 在客户端代码中放置适当的锁(关键部分),以便获取存储的文档、比较日期并以线程安全的方式有条件地添加新文档。
请记住,Solr 不是数据库,将其与 MySQL 进行比较就像比较苹果和橘子。