【发布时间】:2014-04-27 09:19:58
【问题描述】:
Lucene 支持在查询创建期间设置固定的相对字段权重。这意味着对于所有匹配的文档,所有可搜索字段的内容与查询的相似性都基于那些固定的预定义权重进行加权(并求和)。我的问题是是否可以在搜索期间根据每个文档的属性动态设置文档字段权重。 例如,如果所有索引文档都有一个数字字段,我想根据其数字字段值设置每个文档文本字段的相对权重。
谢谢 大卫
【问题讨论】:
Lucene 支持在查询创建期间设置固定的相对字段权重。这意味着对于所有匹配的文档,所有可搜索字段的内容与查询的相似性都基于那些固定的预定义权重进行加权(并求和)。我的问题是是否可以在搜索期间根据每个文档的属性动态设置文档字段权重。 例如,如果所有索引文档都有一个数字字段,我想根据其数字字段值设置每个文档文本字段的相对权重。
谢谢 大卫
【问题讨论】:
是的,这是可能的。为此,您可以使用CustomScoreQuery。你可以在Lucene In Action 一书中找到一个很好的例子,其中 CustomScoreQuery 被扩展以获得新近度提升(基于日期进行的自定义计算来提升文档)。特别是,您希望用您实现所需的计算来覆盖 CustomScoreProvider。
【讨论】: