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



我在 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中,它在结果中出现第 2 位,而 Field2 中包含营销的记录在结果中出现第 3 位,这可能是因为评分机制。

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

@MatsLindh 在

评论中给出的回应是正确的解决方案:

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

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

我可以考虑两种方法来解决这个问题:

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

最新更新