Lucene - 是否可以在不更改查询本身的情况下更改查询的分数?

Lucene - Is it possible to change a query's score without changing the query itself?

我正在尝试使用一种可用算法在我的程序中实现相关性反馈功能。这需要通过将其与所有相关文档的总分相加来更改原始查询分值。分数提高的查询在使用时应该会给出新的结果。问题是,到目前为止我还没有找到任何方法来更改 Lucene 上的查询分数。我错过了文档中的某些内容吗? Lucene 是否提供更改现有查询分数的方法?

要修改查询的分数,您可以将该查询包装在另一个查询中。在 Lucene 中有几个选项可以做到这一点。两个非常相关的:

  • FunctionScoreQuery:提供静态方法来包装查询,将原始分数乘以另一个查询的结果或 DoubleValuesSource,每个文档都会产生提升原始集。
  • 表达式模块:这允许您进行任意计算以生成分数。可以和上面的FunctionScoreQuery组合。 Check the docs for more info.