Solr:从另一个solr核心导入时避免重复记录

时间:2017-02-17 04:53:17

标签: solr dih

我正在尝试使用DIH将单个列从solr核心导入另一个核心。 Solr版本是6.4.0

我的托管模式文件包含以下条目:

<uniqueKey>journal</uniqueKey>
<field name="journal" type="text_general" multiValued="false" indexed="true" stored="true" />
<field name="fjournal" type="string" indexed="true" stored="false"/>

还有一个copyField设置,如下所示:

<copyField source="journal" dest="fjournal" />

在solrconfig.xml中,我配置了以下元素:

<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />

<requestHandler>
    <lst name="defaults">
       <str name="config">solr-data-config.xml</str>
    </lst>
 </requestHandler>

<updateRequestProcessorChain>
    <processor class="solr.UniqFieldsUpdateProcessorFactory">
        <str name="fieldName">journal</str>
    </processor>

    <processor class="solr.LogUpdateProcessorFactory" />
    <processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>

以下是文件“solr-data-config.xml”

<dataConfig>
  <document>
    <entity name="journalMaster" processor="SolrEntityProcessor"
            url="http://localhost:8983/solr/journalMaster "
            query="*:*"
            fl="journal"/>
  </document>
</dataConfig>

当我执行导入过程时,导入完成后的值仍然保留重复的值。

 {    "journal":"Journal of Immunology",
        "_version_":1559554209274134528,
        "fjournal":"Journal of Immunology"},
      {
        "journal":"Journal of Immunology",
        "_version_":1559554209373749248,
        "fjournal":"Journal of Immunology"},
      {
        "journal":"Journal of Immunology",
        "_version_":1559554209375846400,
        "fjournal":"Journal of Immunology"},

如何避免这种情况发生?我将数据从本地核心导入另一个核心。

任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:2)

定义uniqueKey时,您不需要分析内容。 只需要一个能够唯一标识文档的字符串。 这个唯一标识符将用于许多不同的Lucene / Solr功能,因此正确定义它非常重要。

在你的例子中,我会使用'fjournal'作为唯一键。

然后,没有什么可担心的,每次重新索引相同的fjournal时,Solr文档都会被覆盖,因此每个值最终会有一个条目。

可能更好的是要知道为什么需要索引单个现场文件......