我在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
中出现的市场营销应该首先出现,依此类推。
问题:
但是,有一条记录在Field3
和Field4
中出现了市场营销,并且在结果中排名第二,而Field2中包含市场营销的记录在结果中排名第三,这可能是由于计分机制造成的。
我需要的解决方案: 我想按在该字段中应用的提升顺序显示记录,无论是否在多个字段中找到记录,即在field2中具有行销记录的记录应始终在结果中显示第二。
答案 0 :(得分:1)
@MatsLindh在评论中给出的响应是正确的解决方案:
不过,您可以尝试将提升幅度提高到更大 在相同的情况下,不同级别之间的差异-
field1^100000, field2^10000, field3^1000 field4^100
内容,后面的两个字段加起来的总和不会大于 之前的。注意:请注意,分数不仅会受到提升的影响(例如出现次数等)。
答案 1 :(得分:0)
我可以考虑两种解决方法:
使用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)
,因此它们出现在多少字段中都没有关系,它只会占用最大值。
更改助推器,使每个助推器值都高于他之前的助推器总和。例如:field4^1
,field3^2
,field2^4
,field1^8
,这样,字段组合就不会影响排序。