0

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

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

4

2 回答 2

1

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

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

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

于 2019-03-26T09:34:04.693 回答
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^1, field3^2, field2^4, field1^8, 这样任何字段组合都不会影响排序。

于 2019-03-26T09:17:24.123 回答