gpt4 book ai didi

search - 如何编写 Solr FunctionQuery 来增强包含 future 日期的文档?

转载 作者:行者123 更新时间:2023-12-02 16:17:37 26 4
gpt4 key购买 nike

我正在尝试将 future 某个特定日期的记录提升到结果的顶部,并使那些过去日期的相关性降低。我看过很多关于如何提高结果的帖子,这些帖子离现在很近,但这并不是我真正需要的。

最佳答案

你想做的是:

  1. 了解日期是将来的日期还是过去的日期
  2. 针对每种情况使用不同的 boost 函数

假设字段名称为due_date,我们将开始构建您的查询。

首先,您想要获得时差。

&timediff=ms(due_date,NOW)

您可以使用 NOW/HOUR、NOW/DAY 来获得更好的性能

其次,我们需要知道持续时间是正数还是负数:将数字与其绝对值相加将返回 1/true(正数)和 0/false(负数)。

&future=sum($timediff,abs($timediff)

现在,根据数字是正数还是负数,您想要应用不同的增强函数。您可以在这里使用任何您想要的功能。

&futureboost=recip($timediff,1,36000000,36000000)
&pastboost=recip($timediff,1,3600000,3600000)
$finalboost=if($future,$futureboost,$pastboost)
&boost=$finalboost

请注意,futureboost 参数比过去的boost 多 10 倍,这将为 future 的文档提供比过去更高的提升。 recip 函数记录在 Solr Function Query page 上您可以根据您的情况调整 futureboost 和 Pastboost 函数的参数。

要返回函数值,可以使用:

&fl=_DATE_BOOST_:$finalboost

完整查询将是以上所有内容的组合:

&timediff=ms(due_date,NOW/HOUR)
&future=sum($timediff,abs($timediff)
&futureboost=recip($timediff,1,36000000,36000000)
&pastboost=recip($timediff,1,3600000,3600000)
$finalboost=if($future,$futureboost,$pastboost)
&boost=$finalboost
&fl=_DATE_BOOST_:$finalboost

关于search - 如何编写 Solr FunctionQuery 来增强包含 future 日期的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21315138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com