我在 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
中,它在结果中出现第 2 位,而 Field2 中包含营销的记录在结果中出现第 3 位,这可能是因为评分机制。
我需要的解决方案:我想按照在该字段中应用的提升顺序显示记录,无论它是否在多个字段中找到,即在 field2 中具有营销的记录应始终在结果中排名第二。
评论中给出的回应是正确的解决方案:
但是,您可以尝试增加您的提升以获得更大的提升 不同级别之间的差异 -
field1^100000, field2^10000, field3^1000 field4^100
- 这样,给定相同的 内容,后面两个字段加起来不会比 之前的那些。注意:请注意,分数将不仅仅受到提升(例如出现次数等(的影响。
我可以考虑两种方法来解决这个问题:
-
使用
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
,这样任何字段组合都不会影响排序。