我在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)
。
requirement :现在根据需求,field1
中的营销应该首先出现,这样才能正常工作。
Problem:但是在Field3
和Field4
中出现了一种营销记录,在结果中它出现在第二位,而Field2中包含营销的记录在结果中出现了第三位,这可能是由于评分机制的原因。
解决方案,我需要:无论在多个领域中是否发现,我都要按应用于该领域的顺序显示记录,即在field2中有市场营销的记录应该总是出现在第二位。
发布于 2019-03-26 09:34:04
@MatsLindh在评论中的答复是适当的解决办法:
然而,您可以尝试增加您的提升,使不同级别之间的差异更大--
field1^100000, field2^10000, field3^1000 field4^100
--这样,在相同内容的情况下,后面的两个字段加起来不会比之前的字段更大。 备注:请注意,分数将受到不仅仅是助推的影响(如发生的次数等)。
发布于 2019-03-26 09:17:24
我可以想出两种解决办法:
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
,这样任何字段的组合都不会影响排序。https://stackoverflow.com/questions/55334845
复制相似问题