sorting - 由相同提升值提升的文档的意外 Solr 分数
问题描述
我有 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
或者,对于那些更习惯于红宝石的人:
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
一个文档匹配第一个 boost 查询,另一个匹配另一个 boost 查询。它们具有相同的提升值。
我期望的是两个文件都得到相同的分数。但他们没有,他们得到类似的东西
1.2011336 # score for 'unpopular' (featured)
0.6366436 # score for 'popular' (not featured)
我还检查了如果我提升他们共同拥有的属性,他们会得到完全相同的分数,而且他们确实做到了。我还尝试将值更改700
为类似的值,7000
但这没有任何区别(这完全有道理)。
谁能解释为什么他们得到如此不同的分数,而他们都匹配一个提升查询?
解决方案
我猜测混淆源于“查询被相同的值提升” - 这不是真的 - 提升是查询本身的分数,然后被你的^10
.
是加法的bq
- 查询的分数被添加到文档的分数中(当boost
是乘法时,分数乘以提升查询)。
如果您想根据任一匹配向原始查询添加相同的分数值,则可以使用^=10
使查询恒定评分(无论文档的常规分数如何,该分数都将10
针对该术语)。
此外,如果您想独立应用这些因素(而不是作为一个单一的、合并的分数以及来自两个因素的贡献),请改用多个bq
条目。
推荐阅读
- github - how to push CS50AI project to GitHub
- powershell - 从文本文件中删除空格
- java - TextRecognize from image not detecting other language
- google-apps-script - 如何获取另一个电子表格的最后一行并将数据放入其中?
- c# - 我见过很多这样的错误解决方案,但我找不到任何可以帮助我解决这个问题的方法。真的希望你们中的任何人都可以提供帮助。谢谢
- swiftui - 在 Firebase 登录过程中,我应该在哪里检查/迁移现有内容?
- python-3.x - 如何在 python 中修复此语法错误?
- excel - 如何在自动筛选条件值中包含整数
- javascript - 使用延迟加载解析图像
- http - Binance.us order api throwing 'Not all sent parameters were read' 错误