我想惩罚查询中的某些术语,而不是完全忽略它们,因此“不得”运算符将不起作用? 是否可以在 lucene 的布尔查询中使用 SHOULD 的负查询提升,它是如何工作的?
似乎从 Lucene 8 开始就不再允许了:
Lucene 8 中不允许负分,所以我们应该确保 我们不会故意生产任何东西。下面是一个 (希望)负值应该出现的地方的详尽列表 在 es 7 中被禁止,在 6x 中已弃用:
查询提升应始终为正(禁止负查询提升 #34486)现场提升应该始终是积极的。 script_score 函数应返回正分数。 (禁止负分 function_score 查询 #35709) 脚本相似性应该返回 积极的分数。 (向自定义/脚本化添加最低限度的健全性检查 相似之处。 #33564)自定义相似度应返回正值 分数。 (对自定义/脚本相似性添加最低限度的健全性检查。 #33564)
查询和字段提升很简单,在解析查询期间可以检测到负值。对于相似之处和脚本 我们无法轻易推断这些值是否可以为负,因此我们将 必须在查询执行期间检查分数,如果出现以下情况则请求失败 产生负分。