1

我的 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

4

1 回答 1

2

这不是直接可能的。在我进入如何间接地做到这一点之前,我需要解释几件事。

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

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

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

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

于 2013-09-27T21:10:20.477 回答