我有一个包含一些文档的elasticsearch索引,其中每个文档可能都有一个名为“creationDate”的字段,其中包含日期。

现在,我用日期查询索引,并且我想根据creationDate对文档进行评分,因此我设置了一个高斯衰减函数。

但是据我所知,衰减函数都是对称的:即如果我有一个来自2005年的文档,一个来自2007年并搜索2006年的文档,那么两个文档将获得相同的分数。
但是,我希望能够对小于搜索项的值和大于搜索项的值使用不同的衰减。

是否有内置的方法来实现这一目标?

最佳答案

我不确定是否有内置的方法可以精确地执行您想要的操作。但是,根据此文档:https://www.elastic.co/guide/en/elasticsearch/guide/current/decay-functions.html如果您可以将origin设置为2006年至2007年中旬之前的某个时间点,并将offset设置为小于2007- origin的某个值,您将能够实现相同的效果。例如:如果您将origin保留为2006年3月,并将offset保留为3个月,则2006年1月至2006年6月的文档排名将保持不变,而2007年的文档排名将高于2005年的文档。
elasticsearch - 不对称衰减函数-LMLPHP
如果需要更多控制,则应使用脚本,如下所述:
https://www.elastic.co/guide/en/elasticsearch/guide/current/script-score.html

(图片来自 flex doc本身)

08-07 20:06