如何正确配置Solr以删除字段

时间:2016-05-20 11:15:48

标签: solr duplicates

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

我已阅读有关UniqFieldsUpdateProcessorFactory的信息,但未能正确配置,因此我甚至不确定这是否是解决问题的正确方法。

我已将此添加到我的solrconfig.xml

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

我也不确定如何验证此配置是否实际有效以及影响(如果有的话)。

任何关于如何前进的指示都会非常感激。

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:1)

问题是索引问题还是相关问题?因为通常情况下,如果一个术语在一个字段中发生多次,那么 IS 文档被认为比其他文档更具相关性。

如果您不想这样,可以使用omitTermFreqAndPositions flag启用重定义字段,该字段不会存储或考虑在该特定字段中看到的字词数。

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