下面是我的配置文件的一部分:
<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)循环中不断运行。
发布于 2013-10-01 21:46:15
由于skillString是您添加新文档时的唯一键,并且该唯一键是相同的,因此Solr将覆盖您的整个文档(即.所有字段)。Solr没有正确的更新操作,所以每次都会删除并重新插入文档。
因此,如果您只是更新文档,Solr应该会自动满足您的需求。
https://stackoverflow.com/questions/19115740
复制相似问题