首页 > 解决方案 > SolrCloud 重复数据删除覆盖不起作用

问题描述

我一直在努力让重复数据删除在 ​​SolrCloud(8.6 版)中工作。我的 solrconfig.xml 包含:

<updateRequestProcessorChain name="dedupeOn">
       <processor class="solr.processor.SignatureUpdateProcessorFactory">
         <bool name="enabled">true</bool>
         <str name="signatureField">dedupeId</str>
         <bool name="overwriteDupes">true</bool>
         <str name="fields">journal_doi,internal_pmid</str>
         <str name="signatureClass">solr.processor.Lookup3Signature</str>
       </processor>
       <processor class="solr.LogUpdateProcessorFactory" />
       <processor class="solr.DistributedUpdateProcessorFactory"/>
       <processor class="solr.RunUpdateProcessorFactory" />
     </updateRequestProcessorChain>

 <requestHandler name="/update" class="solr.UpdateRequestHandler" >
  <lst name="defaults">
          <str name="update.chain">dedupeOn</str>
  </lst>
  </requestHandler>

我的 managedschema 包含:

<field name="dedupeId" type="string" indexed="true" stored="true" multiValued="false" />

在我的测试中,我添加了 1000 个文档,然后手动提交。我看到“dedupeId”是用哈希创建的。
然后我再添加 10 个我知道是重复的文档,然后再次手动提交。添加了这 10 行,并不会覆盖具有匹配 dedupeId 的原始文档。例如:

  "response":{"numFound":2,"start":0,"maxScore":2.1554677,"numFoundExact":true,"docs":[
      {
        "internal_pmid":"13367837",
        "dedupeId":"7f0306ecd909a68e",
        "journal_doi":"10.1097/00005053-195603000-00006"},
      {
        "internal_pmid":"13367837",
        "dedupeId":"7f0306ecd909a68e",
        "journal_doi":"10.1097/00005053-195603000-00006"}]
  }}

我不确定它是否重要,但在 solr 日志中,我看到一些“添加”条目,其中部分包含:

webapp=/solr path=/update params={update.distrib=TOLEADER&update.chain=dedupeOn&distrib.from=*(shard path)*/&wt=javabin&version=2}{add=[00001hLxMb (1690871781072568320)]} 0 2

但其他添加条目不包含 update.chain 属性,例如

webapp=/solr path=/update params={wt=javabin&version=2}{add=[00000sta0n (1690871780667817984)]} 0 2

任何帮助将不胜感激。

标签: solrsolrjsolrcloud

解决方案


推荐阅读