Solr:从另一个 solr 核心导入时避免重复记录
Solr: Avoid duplicated records while importing from another solr core
我正在尝试使用 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"},
如何避免这种情况发生?我正在将数据从本地核心导入到另一个核心。
任何帮助将不胜感激。
定义uniqueKey时不需要分析内容。
只需要一个可以唯一标识文档的字符串。
这个唯一标识符将用于许多不同的 Lucene/Solr 功能,因此正确定义它很重要。
在您的示例中,我将使用 'fjournal' 作为唯一键。
然后,没有什么可担心的,每次你 re-index 相同的 fjournal,Solr 文档都会被覆盖,所以你最终会得到每个值一个条目。
可能更好奇的是知道为什么需要索引单个字段文档...
我正在尝试使用 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"},
如何避免这种情况发生?我正在将数据从本地核心导入到另一个核心。
任何帮助将不胜感激。
定义uniqueKey时不需要分析内容。 只需要一个可以唯一标识文档的字符串。 这个唯一标识符将用于许多不同的 Lucene/Solr 功能,因此正确定义它很重要。
在您的示例中,我将使用 'fjournal' 作为唯一键。
然后,没有什么可担心的,每次你 re-index 相同的 fjournal,Solr 文档都会被覆盖,所以你最终会得到每个值一个条目。
可能更好奇的是知道为什么需要索引单个字段文档...