【问题标题】:Query Field Boosting issue in solr when boosted term is present in more than 1 field当提升的术语出现在多个字段中时,solr 中的查询字段提升问题
【发布时间】:2019-03-25 09:36:40
【问题描述】:

我在 solr 中有 4 个字段。 例如。 Field1, Field2, Field3 and Field4.

我的提升序列类似于field1^10, field2^8, field3^7 field4^6

现在,如果我搜索关键字营销,可以说q=(Field1:("marketing")^10 OR Field2:("marketing")^8 OR Field3:("marketing")^7 OR Field4:("marketing")^6)

要求: 现在根据要求,field1 中的营销应该首先出现,依此类推,效果很好。

问题: 但是有一条记录在 Field3Field4 中出现了营销,它出现在结果中的第二位,而 Field2 中包含营销的记录出现在结果中的第三位,这可能是因为评分机制。

我需要的解决方案: 我想按照在该字段中应用的提升顺序显示记录,无论它是否在多个字段中找到,即在字段 2 中具有营销的记录应该始终出现在结果中。

【问题讨论】:

  • 你可能需要改变提升策略,因为所有搜索词最终都是总结
  • @Oyeme 抱歉拼写错误。这只是我能想到的增强技术。此外,所有字段的搜索词都将保持不变。我们的客户只需要在上述领域和上述场景中订购。如果您对此有任何解决方案,请告诉我。感谢您的回复。
  • 请注意,分数不仅会受到提升的影响(例如出现次数等)。但是,您可以尝试增加您的提升以在不同级别之间产生更大的差异 - field1^100000, field2^10000, field3^1000 field4^100 - 这样,给定相同的内容,后面的两个字段将不会加起来比之前更大的提升。
  • @MatsLindh 非常感谢您的回复。它对我很有效。我的问题已经解决了。

标签: solr sitecore solr-boost


【解决方案1】:

@MatsLindh 在 cmets 中给出的响应是正确的解决方案:

但是,您可以尝试增加您的提升,以获得更大的 不同级别之间的差异 - field1^100000, field2^10000, field3^1000 field4^100 - 这样,给定相同的 内容,后面的两个字段加起来不会比 之前的那些。

注意:请注意,分数不仅会受到提升的影响(例如出现次数等)。

【讨论】:

    【解决方案2】:

    我可以想到两种方法来解决这个问题:

    1. 使用qf 查询参数 - 如果您在qf 参数而不是q 中传递字段和引导,那么您的查询看起来像这样:q=marketing&qf="field1^10 field2^8, field3^7 field4^6" 那么解析的查询将类似于:max(field1:marketing^10,field2:marketing^8,field3:marketing^7 OR , field4:marketing^6) 所以不管它们出现多少个字段,它只会取最大值。

    2. 更改提升值,使每个提升值都高于他之前的提升值的总和。例如:field4^1field3^2field2^4field1^8,这样任何字段组合都不会影响排序。

    【讨论】:

    • 感谢您的回复。但我认为我将无法使用 qf 参数,因为我们正在使用 SiteCore Content Search Linq 查询 solr,据我所知,我只能使用 q 和 fq,但没有 qf 选项。但我会很感激你的解释,这增强了我对 solr boosting 的了解。
    • "它只会采用 max" 假设.. false 除非使用 0 的 dismax/edismax 查询解析器。跨度>
    猜你喜欢
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    相关资源
    最近更新 更多