以下是我配置文件的一部分:
<fields>
<field name="neoId" stored="true" type="sint" indexed="true" required="true" />
<field name="skillString" stored="true" type="string" indexed="true" required="true" />
<field name="skillName" stored="true" type="text" indexed="true" required="true" />
</fields>
<uniqueKey>skillString</uniqueKey>
<defaultSearchField>skillName</defaultSearchField>
添加新文档时,如果skillString存在,则不会添加文档。非常好。但是文档的neoId字段可能与索引上的字段不同。因此,当skillString已经存在时,我想在索引上的文档中添加额外的neoId。有没有办法做到这一点?因为我无法找到方法。我认为首先检查它是否存在,而不是相应地添加文档或更新文档;但是我想在一个查询中做到这一点,因为它将在一个巨大的(40k)循环内并且不断运行。
答案 0 :(得分:0)
由于在添加新文档时,skillString是您的唯一键,并且唯一键是相同的,Solr将 OVERRIDE 整个文档(即所有字段)。 Solr没有正确的更新操作,所以每次删除并重新插入文档时。
因此,如果您只是更新文档,Solr应自动处理您的要求。