Apache Solr:为什么eDisMax中的boost参数会导致平方分数提升?

vyswwuz2  于 2023-06-05  发布在  Solr
关注(0)|答案(1)|浏览(231)

我正在使用Apache Solr进行搜索功能,在eDisMax查询解析器中的boost参数出现了意外行为。当我试图提高与某个查询匹配的文档的分数时,分数会得到提升值的平方,而不是预期的线性提升。
下面是我使用的查询的一个示例:
select?q=_query_:"{!edismax}shirt"&qt=search.new&fl=score&boost=10
我期望这个查询返回与以前相同的文档,但是它们的分数提高了10倍。然而,现在所有文档的分数都提高了100倍。我注意到在尝试不同的提升值时有相同的行为,并且在每种情况下,分数都得到了提升值的平方的提升。
有人能解释一下为什么会这样吗?这是eDisMax中boost参数的默认行为吗?有没有一种方法来实现线性乘法分数提升?

5vf7fwbs

5vf7fwbs1#

因为_query_被 Package 在q内部,所以boost被应用了两次--boost被应用在内部查询和主查询(q)再次应用于该结果时。由于boost是乘法的,这实际上意味着你应用它两次,值得到平方。
您可以直接在本地参数({!edismax boost=10})中为内部edismax查询提供boost值,也可以全局应用它并在内部查询中禁用它。
实际的答案将取决于你为什么要使用内部查询,以及在你的主查询中,_query_之外还包括哪些其他部分(因为我真的想不出一个理由,让_query_作为q内部的唯一内容)。

相关问题