是否可以在lucene中使用负查询提升?

问题描述 投票:0回答:2

我想惩罚查询中的某些术语,而不是完全忽略它们,因此“不得”运算符将不起作用? 是否可以在 lucene 的布尔查询中使用 SHOULD 的负查询提升,它是如何工作的?

indexing full-text-indexing lucene
2个回答
7
投票

是的,查询项 boost 只是一个 乘法因子,因此将其设置为负值将产生您想要的效果。

这是来自 lucene 邮件列表的一个帖子,讨论 负提升

总而言之,类似于 NOT,但不太严格,因为匹配的文档仍会出现在搜索结果中,即

任何正分数 (>0) 都会产生增加默认分数的影响。

任何负分(<0) will have the affect of decreasing the default score.


0
投票

似乎从 Lucene 8 开始就不再允许了:

Lucene 8 中不允许负分,所以我们应该确保 我们不会故意生产任何东西。下面是一个 (希望)负值应该出现的地方的详尽列表 在 es 7 中被禁止,在 6x 中已弃用:

查询提升应始终为正(禁止负查询提升 #34486)现场提升应该始终是积极的。 script_score 函数应返回正分数。 (禁止负分 function_score 查询 #35709) 脚本相似性应该返回 积极的分数。 (向自定义/脚本化添加最低限度的健全性检查 相似之处。 #33564)自定义相似度应返回正值 分数。 (对自定义/脚本相似性添加最低限度的健全性检查。 #33564)

查询和字段提升很简单,在解析查询期间可以检测到负值。对于相似之处和脚本 我们无法轻易推断这些值是否可以为负,因此我们将 必须在查询执行期间检查分数,如果出现以下情况则请求失败 产生负分。

来源:https://github.com/elastic/elasticsearch/issues/33309

© www.soinside.com 2019 - 2024. All rights reserved.