- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
solr 中按日期字段提升定义为:
{!boost b=recip(ms(NOW,datefield),3.16e-11,1,1)}
我到处查看(例如: Solr Dismax Config for Boost Scoring 和 Solr 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 四舍五入)。
a
和b
是常量(任意定义)。
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 倍。
减少a
和b
扩展函数的响应曲线。这可能非常具有攻击性,请参阅 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/
我正在使用 C#。 我知道我可以用 ToLongDateString() 显示如下内容: Friday, February 27, 2009 我喜欢做的是展示类似的东西: Febru
我将用户输入的时间和日期作为: DatePicker dp = (DatePicker) findViewById(R.id.datePicker); TimePicker tp = (TimePic
我需要检查是否 DateTime.Now是在每个月的前 3 个工作日(周一至周五)。我还需要提供一个 List有国定假日,应相应处理。 如果 DateTime.Now 是星期六并且是该月的 1 号,则
我想以 2012 年 1 月 1 日 - 2012 年 1 月 31 日的格式显示日期 并获取由 dateranges['jan 1,2012 - jan 31,2012','December 1,2
我有这两个函数可以以正确的格式 (mm-dd-yyyy) 创建一个新字符串,但现在它似乎工作得不太好......当我输入日期 31-03-2013 这是一个有效的日期,它出现在 04-01-2013
我只想在 Fullcalendar 中加载 December 月份,其中 2 个日期启用 2012 年 12 月 14 日、15 日。 var date = new Date(2012, 11); v
我创建了一个convertDate类,用于转换我的时间戳,即Date().sinceReferenceDate(即自2001年1月1日凌晨12:00起)。我有一个问题:当时间戳的日期超过 3 周前时,
我有来自两个来源的数据,我试图在日期/时间上进行匹配。问题是我没有得到匹配。所以我将日期/时间转换为 Julian 并遇到了一些奇怪的事情。 8/11/2015 6:50:22.000 42227
我正在尝试将毫秒转换为如下所示的日期:Oct 04, 2013 .我将毫秒转换为日期对象: var d1 = new Date(milliseconds); 然后输出如下内容: Fri Oct 04
我正在尝试使用 javascript 进行倒计时。但是,我的倒计时只能计算天数、小时数、分钟数和秒数。我还想显示年份和月份。 以下是我的代码: today = new Date();
我有下面的查询不适合我, 这个函数 from_tz(to_timestamp(START_TIME, 'YYYYMMDDHH24MISS'), substr(UTC_TIME_CODE_OFFSET,
例如,我有一列数据如下: 17.14.11 17.15.10 18.21.06 现在是 2017 年 11 月 14 日,我想将其更改为 DateTime 对象,例如: 2017-11-14 2017
$date1 = "2000-01-01"; $date2 = "2011-03-14"; $diff = abs(strtotime($date2) - strtotime($date1)); $y
我有以下代码来验证给定日期格式的日期: val df = new SimpleDateFormat("MM/dd/yyyy"); df.setLenient(false); try { val
我有一个包含两个 DateTime 成员的类。 但是,当我尝试将表示日期的“人类可读”值分配给 DateTime 成员时,它拒绝它并显示消息“字符串未被识别为有效的 DateTime”。 失败的代码行
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度的了解。包括尝试的解决方案、为什么它们不起作用以及预期结果
这个问题已经有答案了: Adding days to a date in Java [duplicate] (6 个回答) 已关闭 6 年前。 如何在 java 中将给定的日期转换为日历格式。 示例初
这个问题已经有答案了: Illegal pattern character 'T' when parsing a date string to java.util.Date (4 个回答) 已关闭 6
我现在在香港。如何获取美国的年、月、日? 我已经尝试过: Calendar calendar = Calendar.getInstance(); SimpleDateFormat sdf = new
我正在尝试使用 php 和 Mysql 开发一个搜索系统,但是您如何搜索:例如当数据库中的日期格式为 2012-03-26(年/月/日)时的三月份 最佳答案 根据列数据的格式,这样的事情可能会起作用:
我是一名优秀的程序员,十分优秀!