我已经基于mysql产品数据库构建了一个solr核心。核心工作正常,我可以搜索产品。我面临的问题是,当描述中多次出现搜索词时,与仅包含该词一次的产品相比,该产品被认为更具相关性。有没有办法告诉声纳不考虑重复?
我已阅读有关UniqFieldsUpdateProcessorFactory的信息,但未能正确配置,因此我甚至不确定这是否是解决问题的正确方法。
我已将此添加到我的solrconfig.xml
<processor class="solr.UniqFieldsUpdateProcessorFactory">
<str name="fieldRegex">.*_uniq</str>
</processor>
我也不确定如何验证此配置是否实际有效以及影响(如果有的话)。
任何关于如何前进的指示都会非常感激。
答案 0 :(得分:3)
您可以在schema.xml的索引部分添加solr.RemoveDuplicatesTokenFilterFactory
过滤器,以便在编制索引时删除重复项。使用示例包含此userwiki和solrwiki。这将需要重新编制索引。
我在更新处理器链中使用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启用重定义字段,该字段不会存储或考虑在该特定字段中看到的字词数。
此更改后,您需要重新索引所有内容。