【发布时间】:2015-06-03 15:45:25
【问题描述】:
我有一个 solr 独立服务器(不是 solr 云),保存来自几个不同来源的文档。
通常我需要更新某个来源的文档,通常我通过删除该来源/组中的所有文档并为该来源索引新文档来执行此操作,但这会产生一个时间间隔,我没有该来源的文档来源,这并不理想。 这些文档中的一些可能会从一个更新到另一个保留,一些更改并且可以更新,但有些可能会消失,需要删除。
最好的方法是什么?
有没有办法从源中删除所有文档,但不提交,并且在同一事务索引中再次删除该源,然后才提交? (这不会造成该来源没有信息的时间间隔)
使用核心交换解决方案吗? (或者我是不是太复杂了?)
【问题讨论】:
-
您的客户是否知道哪些文件需要添加或更新,哪些文件需要删除?如果是,您可以简单地添加要添加或更新的文档(添加具有现有唯一 ID 的文档将覆盖现有文档),并删除需要删除的文档。我认为这将是做你需要的最干净的方式。
-
是的,但是客户端不知道哪些需要删除
-
那么在每个文档中都有一个时间戳怎么样,代表它的最后一次添加(即第一次添加,或修改)。您可以对源进行所有更新,提交此操作,然后从该源中删除任何太旧的内容,然后提交删除。它将消除您担心的时间间隔;如果索引一些额外文档的时间间隔是可以的,这将是一个可行的解决方案。
-
是的,没关系,事实上我已经将它更改为与您建议的非常相似的东西,但使用修订而不是时间戳,(不确定我是否信任时钟)跨度>
标签: solr