0

以下是我的配置文件的一部分:

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

添加新文档时,如果技能字符串存在,则不添加该文档。那挺好的。但是文档的 neoId 字段可能与索引中的字段不同。因此,当技能字符串已经存在时,我想在索引上的文档中添加一个额外的 neoId。有没有办法做到这一点?因为我找不到方法。我认为首先检查它是否存在,然后相应地添加文档或更新文档;但我想在单个查询中执行此操作,因为它将在一个巨大的(40k)循环内并不断运行。

4

1 回答 1

0

因为当您添加新文档时, skillString是您的唯一键,并且唯一键相同,所以 Solr 将覆盖您的整个文档(即所有字段)。Solr 没有正确的更新操作,因此每次删除并重新插入文档时。

因此,如果您只是更新文档,Solr 应该会自动满足您的要求。

于 2013-10-01T13:46:15.397 回答