【问题标题】:It is possible to update uniqueKey in Solr 4?可以在 Solr 4 中更新 uniqueKey 吗?
【发布时间】:2013-09-28 05:59:05
【问题描述】:

我的 uniqueKey 定义为:

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
<uniqueKey>id</uniqueKey>

我用对应的“id”字段将几个文档加载到Solr中,我现在需要的是UPDATE“id”值,有可能吗?

当我尝试这样做时,我得到了这个错误:

Document contains multiple values for uniqueKey field

我正在使用 Apache Solr 4.3.0

【问题讨论】:

    标签: solr uniqueidentifier


    【解决方案1】:

    直接不可能。在我讨论如何间接实现之前,我需要解释几件事。

    uniqueKey 字段中的值是 Solr 处理文档更新/替换的方式。当您发送文档进行索引时,如果已存在具有相同 uniqueKey 值的现有文档,Solr 将在索引新文档之前删除自己的副本。

    原子更新功能略有不同。它允许更新添加、更改或删除文档中除 uniqueKey 字段之外的任何字段 - 因为这是 Solr 识别文档的方式。

    您需要做的基本上是用旧文档中的所有数据索引一个新文档,然后删除旧文档。如果文档中的所有字段都可用于索引过程,那么您可以在删除旧文档之前或之后索引新文档。否则,你可以从 Solr 中查询现有的 doc,新建一个并索引它,然后删除旧的。

    为了使用现有的 Solr 文档来索引新的文档,必须存储所有字段,除非它们是 copyField 目标,在这种情况下它们不能被存储。原子更新(上面讨论过)具有相同的要求。如果这些字段中的一个或多个未存储,则搜索结果将不包含该字段并且数据将丢失。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      • 2010-11-28
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多