如何正确配置Solr以删除字段中的重复项

如何正确配置Solr以删除字段中的重复项,solr,duplicates,Solr,Duplicates,我已经基于mysql产品数据库构建了一个solr核心。核心工作良好,我可以搜索产品。我面临的问题是,当一个搜索词在描述中多次出现时,与只包含该词一次的产品相比,该产品被认为更相关。有没有办法告诉声纳不考虑重复的话? 我已经读过UniqFieldsUpdateProcessorFactory,但无法正确配置它,因此我甚至不确定这是否是解决我的问题的正确方法 我已将其添加到我的solrconfig.xml中 <processor class="solr.UniqFieldsUpdateProc

我已经基于mysql产品数据库构建了一个solr核心。核心工作良好,我可以搜索产品。我面临的问题是,当一个搜索词在描述中多次出现时,与只包含该词一次的产品相比,该产品被认为更相关。有没有办法告诉声纳不考虑重复的话?

我已经读过UniqFieldsUpdateProcessorFactory,但无法正确配置它,因此我甚至不确定这是否是解决我的问题的正确方法

我已将其添加到我的solrconfig.xml中

<processor class="solr.UniqFieldsUpdateProcessorFactory">
  <str name="fieldRegex">.*_uniq</str>
</processor>

.*u uniq
我也不知道如何验证这个配置是否真的在工作,以及有什么影响(如果有)


任何关于如何前进的建议都将不胜感激。

您可以在schema.xml的索引部分添加
solr.removedUpplicateStokenFilterFactory
过滤器,以便在索引时删除重复项。此和中有使用示例。这将需要重新编制索引

我在更新处理器链中使用
solr.UniqFieldsUpdateProcessorFactory
,以确保在原子更新期间不会添加重复项。文档上载时从未尝试过它的行为。Yonik在本文中解释了原子更新。我使用它的方式如下:

<processor class="solr.UniqFieldsUpdateProcessorFactory">
  <str name="fieldRegex">[NAME OF MY FIELD IN SCHEMA.XML]</str>
</processor>

[SCHEMA.XML中我的字段的名称]

您可以使用重复记录的样本数据在本地设置中进行测试。

问题是索引问题还是相关性问题?因为通常情况下,如果一个术语在一个字段中出现多次,则文档被认为比其他文档更相关

如果您不想这样做,可以使用enable重新定义字段,它不会存储或考虑在该特定字段中看到术语的次数

更改后,您需要重新索引所有内容