gpt4 book ai didi

search - Solr 中日期的增强增强

转载 作者:行者123 更新时间:2023-12-03 01:13:53 25 4
gpt4 key购买 nike

solr 中按日期字段提升定义为:

{!boost b=recip(ms(NOW,datefield),3.16e-11,1,1)}

我到处查看(例如: Solr Dismax Config for Boost ScoringSolr boost for multivalued date field ,它们都引用 SolrRelevancyFAQ ),使用相同的定义。但我发现这并不足以提高我的成绩。我怎样才能让这个日期提升更强?

用户正在搜索两个关键字。这两个项目的标题和描述中都包含两个关键字(按相同顺序)。两个关键字均不重复。

solr 调试输出对我来说太困惑了,无法理解这个问题。

现在,这不是一个大问题。 99% 的查询工作正常并产生预期结果,所以这不像 solr 根本不工作,我只是发现这种情况让我非常困惑,不知道如何继续。

最佳答案

recip(x, m, a, b) 实现 f(x) = a/(xm+b)与:

  • x :以毫秒为单位的文档年龄,定义为 ms(NOW,<datefield>) .

  • m :定义用于应用升压的时间尺度的常量。它应该与您认为的旧文档年龄(reference_time)(以毫秒为单位)相关。例如,选择 1 年 (3.16e10ms) 的 reference_time 意味着使用其倒数:3.16e-11 (1/3.16e10 四舍五入)。

  • ab是常量(任意定义)。

  • xm = 1当文档为 1 reference_time 时(乘数 = a/(1+b) )。
    xm ≈ 0当文档是新的时,导致值接近 a/b .

  • 对 a 和 b 使用相同的值可确保最近文档的乘数不超过 1。

  • a = b = 1 ,1 reference_time 旧文档的乘数约为 1/2,2 reference_time 旧文档的乘数约为 1/3,依此类推。

如何让约会更有动力?

  • 增加m :选择较低的 reference_time 例如 6 个月,这给我们 m = 6.33e-11 。与 1 年引用相比,随着文档期限的增加,乘数下降速度加快 2 倍。

  • 减少ab扩展函数的响应曲线。这可能非常具有攻击性,请参阅 this example (第 8 页)。

  • 使用 bf (Boost Functions)对boost函数本身应用boost参数(这是一个 dismax 参数,因此需要使用 DisMax 或 eDisMax 查询解析器),例如:

    bf=recip(ms(NOW,datefield),3.16e-11,1,1)^2.0
<小时/>

需要注意以下几点:

  • bf是一个附加提升,并作为添加到较新文档分数的奖励

  • {!boost b}是一个乘法提升,更多的是作为对旧文档分数的惩罚

  • bf 分数(添加到全局分数中的“奖励”)的计算与相关性分数(全局分数)无关,这意味着分数较高的结果集可能不会像分数较低的结果集那样受到影响。分数较低。相比之下,无论结果集相关性如何,乘法提升都会以相同的方式影响分数,这就是为什么它通常是首选的原因。

  • 请勿使用 recip()对于 future 超过一个 reference_time 的日期,否则会产生负值。

另请参阅 Nolan Lawson 在 Comparing boost methods in Solr 上发表的这篇非常有见地的文章.

关于search - Solr 中日期的增强增强,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22017616/

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