我正在使用Apache Solr进行搜索功能,在eDisMax查询解析器中的boost参数出现了意外行为。当我试图提高与某个查询匹配的文档的分数时,分数会得到提升值的平方,而不是预期的线性提升。
下面是我使用的查询的一个示例:select?q=_query_:"{!edismax}shirt"&qt=search.new&fl=score&boost=10
我期望这个查询返回与以前相同的文档,但是它们的分数提高了10倍。然而,现在所有文档的分数都提高了100倍。我注意到在尝试不同的提升值时有相同的行为,并且在每种情况下,分数都得到了提升值的平方的提升。
有人能解释一下为什么会这样吗?这是eDisMax中boost参数的默认行为吗?有没有一种方法来实现线性乘法分数提升?
1条答案
按热度按时间5vf7fwbs1#
因为
_query_
被 Package 在q
内部,所以boost被应用了两次--boost被应用在内部查询和主查询(q
)再次应用于该结果时。由于boost
是乘法的,这实际上意味着你应用它两次,值得到平方。您可以直接在本地参数(
{!edismax boost=10}
)中为内部edismax
查询提供boost值,也可以全局应用它并在内部查询中禁用它。实际的答案将取决于你为什么要使用内部查询,以及在你的主查询中,
_query_
之外还包括哪些其他部分(因为我真的想不出一个理由,让_query_
作为q
内部的唯一内容)。