由相同提升值提升的文档的意外 Solr 分数
Unexpected Solr scores for documents boosted by the same boost values
我有 2 个文档:
{
title: "Popular",
registrations_count: 700,
is_featured: false
}
和
{
title: "Unpopular",
registrations_count: 100,
is_featured: true
}
我是 运行 这个 Solr 查询(通过 Ruby Sunspot gem):
fq: ["type:Event"],
sort: "score desc",
q: "*:*",
defType: "edismax",
fl: "* score",
bq: ["registrations_count_i:[700 TO *]^10", "is_featured_bs:true^10"],
start: 0, rows: 30
或者,对于那些更习惯ruby的人:
Challenge.search do
boost(10) do
with(:registrations_count).greater_than_or_equal_to(700)
end
boost(10) do
with(:is_featured, true)
end
order_by :score, :desc
end
一个文档匹配第一个提升查询,另一个匹配另一个提升查询。它们具有相同的提升值。
我希望两份文件的分数相同。但他们没有,他们得到了类似的东西
1.2011336 # score for 'unpopular' (featured)
0.6366436 # score for 'popular' (not featured)
我还检查过,如果我提升他们共同拥有的一个属性,他们会得到完全相同的分数,他们确实如此。我还尝试将 700
值更改为 7000
之类的值,但没有任何区别(这完全有意义)。
谁能解释为什么他们得到如此不同的分数,而他们都匹配其中一个提升查询?
我猜混淆源于“查询被相同的值提升”——这不是真的——提升是查询本身的分数,这是然后由您的 ^10
.
放大 10 倍
bq
是加法的——查询的分数加到文档的分数上(而 boost
是乘法的,分数乘以 boost 查询)。
如果您想根据任一匹配向原始查询添加相同的得分值,您可以使用 ^=10
使查询得分恒定(得分将为 10
该术语,无论文档的常规分数如何)。
此外,如果您想独立应用这些因素(而不是将两个因素的贡献合并为一个单一的分数),请改用多个 bq
条目。
我有 2 个文档:
{
title: "Popular",
registrations_count: 700,
is_featured: false
}
和
{
title: "Unpopular",
registrations_count: 100,
is_featured: true
}
我是 运行 这个 Solr 查询(通过 Ruby Sunspot gem):
fq: ["type:Event"],
sort: "score desc",
q: "*:*",
defType: "edismax",
fl: "* score",
bq: ["registrations_count_i:[700 TO *]^10", "is_featured_bs:true^10"],
start: 0, rows: 30
或者,对于那些更习惯ruby的人:
Challenge.search do
boost(10) do
with(:registrations_count).greater_than_or_equal_to(700)
end
boost(10) do
with(:is_featured, true)
end
order_by :score, :desc
end
一个文档匹配第一个提升查询,另一个匹配另一个提升查询。它们具有相同的提升值。
我希望两份文件的分数相同。但他们没有,他们得到了类似的东西
1.2011336 # score for 'unpopular' (featured)
0.6366436 # score for 'popular' (not featured)
我还检查过,如果我提升他们共同拥有的一个属性,他们会得到完全相同的分数,他们确实如此。我还尝试将 700
值更改为 7000
之类的值,但没有任何区别(这完全有意义)。
谁能解释为什么他们得到如此不同的分数,而他们都匹配其中一个提升查询?
我猜混淆源于“查询被相同的值提升”——这不是真的——提升是查询本身的分数,这是然后由您的 ^10
.
bq
是加法的——查询的分数加到文档的分数上(而 boost
是乘法的,分数乘以 boost 查询)。
如果您想根据任一匹配向原始查询添加相同的得分值,您可以使用 ^=10
使查询得分恒定(得分将为 10
该术语,无论文档的常规分数如何)。
此外,如果您想独立应用这些因素(而不是将两个因素的贡献合并为一个单一的分数),请改用多个 bq
条目。