当多个字段中存在提升词时,solr中的查询字段提升问题

时间:2019-03-25 09:36:40

标签: solr sitecore solr-boost

我在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中包含市场营销的记录在结果中排​​名第三,这可能是由于计分机制造成的。

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

2 个答案:

答案 0 :(得分:1)

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

  

不过,您可以尝试将提升幅度提高到更大   在相同的情况下,不同级别之间的差异-field1^100000, field2^10000, field3^1000 field4^100   内容,后面的两个字段加起来的总和不会大于   之前的。

     

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

答案 1 :(得分:0)

我可以考虑两种解决方法:

  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,这样,字段组合就不会影响排序。